我有200个排序的正整数数组(其中一些数字超过一百万)。我需要找到每个数组中存在的第一个数字。你会建议什么?如何与大数的数组进行比较?
6
A
回答
3
- 保留每个阵列的索引。
- 从第一个数组的第一个数字开始,作为参考。
- 是第n个数组的第一个数字低于参考,增加其索引。
- 是第n个数组的第一个数字等于参考,增加n并继续 - 下一个数组。
- 是第n个数组的第一个数字高于参考,使用该数字作为参考并重新开始。
- 如果n == 201,则您的引用存在于每个数组中。
编辑:一个代码示例:
while n < len(data):
item = data[n][indices[n]]
if item < reference:
indices[n] += 1
elif item == reference:
n += 1
elif item > reference:
reference = item
n = 0
print reference
1
您可以对阵列执行k-way合并,并检查出现k
次的第一个元素。
另一种方法是创建一个histogram,并选择在直方图中出现k
时间的第一个元素。在Java中的直方图可以很容易地通过一个Map<Element,Integer>
来实现两种解决方案都O(kn)
其中k
是阵列的数量和n
是阵列的平均尺寸,因此它是在输入的大小基本上是线性的。
相关问题
- 1. 如何将数组与数组进行比较?
- 2. 将int与数组进行比较java
- 3. 将CSV与数组进行比较
- 4. 如何将数组与红宝石中的键进行比较?
- 5. 如何将变量与数组中的条目进行比较
- 6. 将迭代器与(固定大小)数组进行比较
- 7. 将数组与ArrayList中的另一个数组进行比较
- 8. 将数组与数组中的对象属性进行比较
- 9. 如何将范围与数组进行比较?
- 10. JavaScript:如何将用户输入与数组进行比较?
- 11. 如何将POST响应与数组值进行比较?
- 12. 如何将变量的数据与数组中的数据进行比较?
- 13. 在迭代期间将数组与数组进行比较(续)
- 14. 将常量数组与对象数组进行比较
- 15. 使用开关与数组数组进行比较
- 16. 将数字与javascript中的数组进行比较
- 17. 将输入数字与数组中的值进行比较
- 18. 将数值与数组值进行比较的问题
- 19. 如何将一个char数组与unsigned char数组进行比较?
- 20. 将元组与元组进行比较
- 21. 如何将用户输入与数组中的整数进行比较?
- 22. Java:将值与数组进行比较;获取前3个数字大于值
- 23. 将用户输入与整数或数组进行比较
- 24. mysql数据库值进行比较数组值与PDO
- 25. 将枚举与整数进行比较
- 26. 将php数组与javascript数组的相同数据进行比较
- 27. 如何让子集与数组比较
- 28. 将新的CGPoint值与数组中的CGPoint值进行比较
- 29. 数组排序比较方法总是进行默认比较
- 30. 将提示答案与数组上的选项进行比较
评论删除------------------------------ --------------------- – 2012-07-17 11:39:19
'Arrays.binarySearch()'方法' – 2012-07-17 11:39:31
比“AND”更适合的描述可能是“交集”。 – Sjoerd 2012-07-17 12:05:08