package offer;
import java.util.ArrayList;
import java.util.List;
public class Third {
public static void main(String[] args) {
int[] nums = { 2, 3, 1, 0, 2, 5, 3 };
List<Integer> repeatNums = new ArrayList<>();
duplicate(nums, repeatNums);
System.out.println("重复数字:" + repeatNums);
System.out.print("原数组:");
for (int num : nums) {
System.out.print(num);
}
}
private static void duplicate(int[] nums, List<Integer> repeatNums) {
if (nums == null)
return;
for (int num : nums) {
if (num < 0 || num > nums.length - 1)
return;
}
for (int i = 0; i < nums.length; i++) {
while (nums[i] != i) {
// 因为该数出现在了它本该出现的位置上,所以重复。
if (nums[i] == nums[nums[i]]) {
repeatNums.add(nums[i]);
break;
}
// 把当前位置上的数字放到自己应该出现的位置上。
int temp = nums[i];
nums[i] = nums[temp];
nums[temp] = temp;
}
}
}
}
转载:https://blog.csdn.net/qq_17564151/article/details/101386469
查看评论