原理:将索引和数组值关联起来,将数组元素放到自己的值对应的索引上,如果有重复的数字,则必会出现一个索引对应多个相同值的情况,即为答案。
思路来源https://leetcode-cn.com/u/jyd/
class Solution {
public:
int findRepeatNumber(vector<int>& nums) {
int i = 0;
while (i < nums.size()) {
if (nums[i] == i) {
i++;
continue;
}
if (nums[nums[i]] == nums[i]) {
return nums[i];
}
swap(nums[i], nums[nums[i]]);
}
return -1;
}
};