给定1到100的整数数组(随机插入),并从数组中取出一个整数。找到缺少的整数的最有效方法是什么?
答案 0 :(得分:10)
如你所知整数,总算所有这些:
(1+N)*N/2 = (1+100)*100/2 = 5050
现在减去数组中的总和( S' )。差异将是您寻找的一个缺失的数字(所以x = 5050 - S'
)。
时间复杂度为O(N),无法更快地解决,因为您肯定需要一次读取数组。
答案 1 :(得分:3)
MZetko已经回答了基本案例,但这里有4个其他解决方案,可以对数组进行排序或排序