1、原题如下
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.
2、解题如下:
class Solution {
public:
int findDuplicate(vector<int>& nums) {
sort(nums.begin(),nums.end());
for(int i=0;i<nums.size()-1;i++)
{
if(nums[i+1]==nums[i])
return nums[i];
}
}
};//排序完(虽然sort排序不具备稳定度,但是并不影响我们找到相等的两个值)判定找到连续相等的两个值,则一定是重复的值。
3、总结
我承认leetcode的难度有的时候写的有问题。