287. Find the Duplicate Number
来源:互联网 发布:数据库unique 编辑:程序博客网 时间:2024/05/01 04:59
Given an array nums containing n + 1 integers where each integer is between 1 and n (inclusive), prove that at least one duplicate number must exist. Assume that there is only one duplicate number, find the duplicate one.
Note:
- You must not modify the array (assume the array is read only).
- You must use only constant, O(1) extra space.
- Your runtime complexity should be less than
O(n2)
. - There is only one duplicate number in the array, but it could be repeated more than once.
思路1:二分法,count是nums里在head和mid之间的个数,如果重复数在head和mid之间,count>mid-head+1;否则在mid+1和tail之间。
public int findDuplicate(int[] nums) { //binary search int h = 1, t=nums.length-1; while(h<t){ int count=0; int mid=(h+t)/2; for(int i=0; i<nums.length; i++){ if(nums[i]>=h&&nums[i]<=mid) count++; } if(count>(mid-h+1)) t=mid; else h=mid+1; } return h; }
思路2: 找环,当前值为下一个值的下标,形成一个新链表,如果两个数相同,则指向同一个下标,则形成环。转变成链表中找环的起点问题。
public int findDuplicate(int[] nums) { //find circle int p1=0, p2=0; do{ p1=nums[p1]; p2=nums[p2]; p2=nums[p2]; } while(p1!=p2); p1=0; while(p1!=p2){ p1=nums[p1]; p2=nums[p2]; } return p2; }
0 0
- 287. Find the Duplicate Number
- 287. Find the Duplicate Number
- 287. Find the Duplicate Number
- 287. Find the Duplicate Number
- 287. Find the Duplicate Number
- 287. Find the Duplicate Number
- 287. Find the Duplicate Number
- 287. Find the Duplicate Number
- 287. Find the Duplicate Number
- 287. Find the Duplicate Number
- 287.Find the Duplicate Number
- 287. Find the Duplicate Number
- 287. Find the Duplicate Number
- 287. Find the Duplicate Number
- 287. Find the Duplicate Number
- 287. Find the Duplicate Number
- 287. Find the Duplicate Number
- 287. Find the Duplicate Number
- 成为PHP编程高手的四条指南
- [BZOJ1036][ZJOI2008]树的统计Count
- Spring MVC 03 - 使用eclipse创建第一个spring mvc程序
- View框架之measure()流程
- 使用树莓派(raspberry pi)搭建网站(nginx+php+mysql+ddclient)
- 287. Find the Duplicate Number
- 在树莓派上搭建LAMP(Linux Apache Mysql PHP)服务器
- 网狐_经典版机器人添加说明
- 剑指offer-二叉搜索树的后序遍历序列
- Golden Dream-11月
- HDU-5952 Counting Cliques(16年ICPC沈阳赛区)(暴力DFS)
- iOS 导航栏标题文字颜色渐变
- HDU-1301-Jungle Roads
- Build OpenCV 3.1 from source files on Windows