CS-Notes
CS-Notes copied to clipboard
3. 数组中重复的数字
`
public int duplicate(int[] nums) { for (int i = 0; i < nums.length; i++) { while (nums[i] != i) { if (nums[i] == nums[nums[i]]) { return nums[i]; } swap(nums, i, nums[i]); } //这里为什么还需要交换,这个是多余的 swap(nums, i, nums[i]); } return -1; }
private void swap(int[] nums, int i, int j) { int t = nums[i]; nums[i] = nums[j]; nums[j] = t; }`
确实是多余的,i == nums[i], 即swap参数 i==j,指向的都是同一个元素