题解 | #数组中重复的数字#
数组中重复的数字
http://www.nowcoder.com/practice/6fe361ede7e54db1b84adc81d09d8524
方法一:
方法二:
import java.util.*;
public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param numbers int整型一维数组 * @return int整型 */ public int duplicate (int[] numbers) { // write code here //方法二:利用数组下标来判断,是否有重复的数字 //利用数组numbers[i] = i,numbers[numbers.length - 1] = numbers.length-1 int n = numbers.length; //1~n-1 for(int i = 0; i < numbers.length; i++){ if(numbers[i] < 0 || numbers[i] >= n){ return -1; } }
//利用下标 保证下标 == 元素值
for(int i = 0 ; i < n ; i++){
while(numbers[i] != i && numbers[numbers[i]] != numbers[i]){
swap(numbers , i , numbers[i]);
}
if(numbers[i] != i && numbers[numbers[i]] == numbers[i]){
return numbers[i];
}
}
return -1;
}
//交换数组中的两个元素
public void swap(int[] arr , int i , int j){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}