633.寻找重复的数-创新互联
给出一个数组
标题名称:633.寻找重复的数-创新互联
标题来源:http://lswzjz.com/article/cdhcds.html
nums
包含 n + 1
个整数,每个整数是从 1
到 n
(包括边界),保证至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。
注意事项
1.不能修改数组(假设数组只能读)
2.只能用额外的O(1)的空间
3.时间复杂度小于O(n^2)
4.数组中只有一个重复的数,但可能重复超过一次
给出 nums
= [5,5,4,3,2,1]
,返回 5
.
给出 nums
= [5,4,4,3,2,1]
,返回 4
.
1 int findDuplicate(vector &nums) {
2 // write your code here 3 int left=1,right=nums.size()-1;
4 int mid=left+(right-left)/2;
5 int left_num;
6 while(left
自己没想出来,照着网上的思路写了一个
left是1,right是n。mid算出来以后遍历数组,看有多少小于等于它的,如果统计的数量小于等于mid这个数的本身,就说明重复的数在比mid大的那边。
于是就left=mid+1(因为不够嘛所以不要了)或者right=mid。最后left=right的值就是所求
标题名称:633.寻找重复的数-创新互联
标题来源:http://lswzjz.com/article/cdhcds.html