编程珠玑课后题答案
-
编程珠玑
如何高效地找出数组中的重复数字问题描述给定一个长度为n的数组,其中所有元素的值均在[1,n]之间,现在需要找出数组中的所有重复数字。解法分析解法一这种算法虽然不是排序算法,但它可以在O(n)时间内(顺带用了O(n)的空间)快速地找出数组中重复出现的数字。这个算法的关键在于把相应元素放到与其下标相等的位置上,假如值为m的元素在下标i出现,我们就将其放在下标m处。在这个过程中如果发现下标m处已存在了值为m的元素,那么m就是重复的数字。代码实现复杂度分析时间复杂度:O(n)。由于整个算法只包含一次遍历并可以在常量时间内完...