我必须找到给定数组中所有数字的周期,就像有很多解决方案,但数组的大小是 10^5
I have to find the period of all numbers in an given array, like there are many solutions but size of the array is 10^5
例如。给定的数组:[1,2,1,3,1,2,1,5] 应该返回-1 -> 2
2 -> 4
3 -> 0
5 -> 0
我能想到一个解决方案,但它是 O(n^2(。 建议更好的东西。
在一次线性扫描中将数组转换为按值索引的数组哈希图,其中包含找到该值的索引。对于您的示例,这将是:
{
1: [0, 2, 4, 6],
2: [1, 5],
3: [3],
5: [7],
}
然后对于每个条目l
在哈希图中输出0
如果len(l) <= 1
,否则输出l[1] - l[0]
。如果还必须检查周期是否一致,请检查所有i >= 2
的l[i] - l[i-1] == l[1] - l[0]
。
相关文章:
- 你能帮我解决删除数组 c++ 中重复值的挑战吗?
- 从排序数组中删除重复项,具有不同代码方式的相同解决方案具有不同的输出
- 我正在尝试解决一个需要数组总和值但代码不起作用的问题,我想做这样的事情
- 使用STL对用户输入数组进行排序的错误有什么解决方案吗?
- 我必须找到给定数组中所有数字的周期,就像有很多解决方案,但数组的大小是 10^5
- 寻找C++中数组和cout交互的解决方案
- 对于非常大的输入,缺少和重复 1..n 的数字数组.使用1..n系列特性的解决方案.溢出问题
- 比较/搜索数组中多个整数的最佳解决方案
- 递归解决方案,用于显示线性链表数组
- 整数数组中最大异或次级的解决方案
- 我可以使用模板作为多态处理数组的安全解决方案
- 我该如何判断k-server动态解决方案的最佳路径以数组成本[i] [j] [k] [t]位于何处
- 数独解决方案仅适用于行和列
- GoogleMock SaveArg 用于保存数组?编译器抛出错误,我还没有看到一个好的解决方案
- 用可以检查边界 c++ 的东西替换数组的最接近的解决方案
- 将一维矩阵数组转换为主一维矩阵的有趣算法挑战,需要有效的解决方案
- 关于C++中的二维数组,我的解决方案有什么问题
- 在c++和POSIX中使用数组解决并发问题
- C++对象实例化数组(我正在尝试找到编译时解决方案)
- 给定一个范围,我必须计算数组中数字的频率.给定的解决方案是否有效