将对应数移到对应位上,如果该位上数与要移动的数相同,就找到了,空间O1
class Solution {
public int findRepeatNumber(int[] nums) {
int len = nums.length;
int i = 0;
while(i != len) {
if(i == nums[i]) {
i++;
} else {
if(nums[i] == nums[nums[i]]) {
return nums[i];
}
swap(nums, i, nums[i]);
}
}
return -1;
}
void swap(int[] nums, int i, int j) {
nums[i] += nums[j];
nums[j] = nums[i] - nums[j];
nums[i] -= nums[j];
}
}
本文介绍了一种高效的算法,用于在一个整数数组中查找重复出现的数字,通过交换操作找到并返回第一个出现的重复数,空间复杂度达到最优的O(1)。解决方案包括findRepeatNumber方法和swap辅助函数。
535

被折叠的 条评论
为什么被折叠?



