题解 | 数组中重复的数字
数组中重复的数字
https://www.nowcoder.com/practice/6fe361ede7e54db1b84adc81d09d8524
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param numbers int整型一维数组
* @return int整型
*/
public int duplicate (int[] numbers) {
// write code here
for(int i = 0 ; i < numbers.length ; i++){
while(numbers[i] != i ){
// 发现i上的值已经相等了,重复了
if(numbers[i] == numbers[numbers[i]]){
return numbers[i];
}
// swap(数组 , 当前数字的下标 ,数字需要调整到的下标)
swap(numbers , i , numbers[i]);
}
// swap(numbers , i , numbers[i]);
}
return -1;
}
private void swap(int[] num , int i , int j){
int temp = num[i];
num[i] = num[j];
num[j] = temp;
}
}
解题思路:将值为i的元素调整到第i个位置,后面调整是如果当前i上的值正确,就发现了重复数字