题目描述
解答:
思路:假设没有重复数字,那么正常排序后,数字i应该在下标为i的位置,所以采用原地置换的方式即可解决
class Solution {
public:
int findRepeatNumber(vector<int>& nums) {
//原地置换
for(int i = 0;i<nums.size();i++){
if(i!=nums[i]){
if(nums[i]==nums[nums[i]])
return nums[i];
else{
int temp = nums[i];
nums[i] = nums[nums[i]];
nums[temp] = temp; //不能写成nums[nums[i]] = temp
}
}
}
return -1;
}
};
注意:
交换的时候不能写成nums[nums[i]] = temp,以为此时nums[i]已经变了