[leetcode] 287. Find the Duplicate Number 解题报告
来源:互联网 发布:网络舆情监控eefung 编辑:程序博客网 时间:2024/06/03 18:11
题目链接:https://leetcode.com/problems/find-the-duplicate-number/
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.
思路:这题有一个定理叫做鸽笼原理,大意就是n个东西放到m个容器中,如果n > m,那么必然有一个容器包含多于一个东西。
而这题把数据范围限制在1-n之间也是别有用意,这样我们就可以用二分查找来不断缩小范围来找到重复的数。
我们使用二分查找先确定一个中间值mid,然后统计整个数组,看比mid小的数是否比mid多,如果多的话,说明重复的值就在[left, mid-1]之间,否则就在[mid+1, right]之间。
代码如下:
class Solution {public: int findDuplicate(vector<int>& nums) { int left = 1, right = nums.size(); while(left <= right) { int mid = (left + right)/2, cnt = 0; for(auto val: nums) if(val <= mid) cnt++; cnt <= mid? left=mid+1: right=mid-1; } return left; }};
0 0
- [leetcode] 287. Find the Duplicate Number 解题报告
- LeetCode 287. Find the Duplicate Number 解题报告
- 【LeetCode】287.Find the Duplicate Number解题报告
- [Leetcode] 287. Find the Duplicate Number 解题报告
- [leetcode] 287.Find the Duplicate Number
- [leetcode] 287. Find the Duplicate Number
- <LeetCode OJ> 287. Find the Duplicate Number
- Leetcode 287. Find the Duplicate Number
- Leetcode - 287. Find the Duplicate Number
- [LeetCode]287. Find the Duplicate Number
- LeetCode 287. Find the Duplicate Number
- 【leetcode】287. Find the Duplicate Number
- 【leetcode】287. Find the Duplicate Number
- leetcode 287. Find the Duplicate Number
- LCP287 LeetCode 287. Find the Duplicate Number
- [Leetcode]287. Find the Duplicate Number
- Leetcode题解 287. Find the Duplicate Number
- [LEETCODE] 287. Find the Duplicate Number
- STM32_RTC晶振不起振的原因及解决方法
- java提高篇—–HashTable
- ubuntu使用感受
- 初步折腾网站之感想
- sql 相同字段的情况下 取时间最近的一条
- [leetcode] 287. Find the Duplicate Number 解题报告
- 坑爹力作——《天际浩劫》
- 暑假将尽啊
- 程序猿装B指南
- 你是否应该成为一名全栈工程师?
- Fedora19添加桌面系统,实现类似windows桌面
- MySQL数据库的热备份和冷备份优缺点
- 一晃也已经两年了
- [转载]JAVA开发八荣八耻