在[a,b]间隔之间找到相同的数字
Find the same numbers between [a,b] intervals
假设我有3个连续数字
a = [1, 2, 3]
b = [2, 3, 4]
c = [3, 4]
然后,所有3个数组中出现的相同数字均为3。我的算法是在彼此中使用两个for
循环检查相同的数组,然后将其推入另一个数组(我们称其为d
(。然后
d = [2, 3] (d = a overlap b)
并再次使用它检查数组d
和c
=>最终结果是1,因为在所有3个数组中只有1个数字。
e = [3] (e = c overlap d) => e.length = 1
除此之外,如果仅存在1个数组,则算法应返回数组的长度,因为其所有数字本身都出现。但是我认为上面的算法会花费太长时间,因为数组的数量可以达到10^5。因此,有更好的算法的想法?
,但我认为上面说的算法会花费太长时间,因为数组的数量可以达到10 5 。因此,有更好的算法的想法吗?
是的,由于这些是范围,因此您基本上想计算范围的相交。这意味着您可以计算列表的所有第一个元素的最大 m ,以及所有的最小值 n last列表的元素。然后, m 和 n (都包含在内(之间的所有数字均为所有列表的成员。如果 m> n ,则这些列表中没有数字。
您不需要通过枚举第一个列表来计算重叠,并检查这些是最后一个列表的成员。由于这些是连续的数字,因此我们可以轻松找出重叠是什么。
简而言之,的重叠[a,...,b]> max( a , c (,...,min( b , d (],无需检查之间的元素。
相关文章:
- 在数字之间插入 + 或 - 符号以使其等于整数
- 获取 2 个数字之间的差异百分比
- 两个有符号数字之间的距离
- 无法理解代码背后的逻辑,这是在两个给定数字之间生成素数的优化问题
- 数字之间的比较
- 在没有比较运算符的情况下查找 2 个数字之间的最小值
- 不理解连续数字之间的空格代码
- 如果 2 个数字之间的差值在 1 到 100 之间,则应运行 if 语句
- 第一个和第二个数字之间能被 4 和 6 整除的所有整数的总和
- 2 个给定数字之间的双精度密度
- 三个数字之间的 C++ 相加两个更高的数字,没有循环和数组
- 给定n个数字,编写一个例程,以在4个连续数字之间找到最大的数字
- 在二进制字符串的数字之间留出空间
- 如何使用Mersenne Twister生成两个数字之间的所有值一次
- 程序以计算2个数字之间的素数-SPOJ Quality2
- 查找 2 个数字之间的数字
- 查看 deque 中两个相等数字之间的长度是否为偶数
- 计算两个数字之间差值的最短方法
- 查找两个数字之间的质数
- 我的代码试图找到 0 - n 个数字之间的所有素数,语句"bool prime[n + 1];"中的'+ 1'有什么用?