剣指offer 2(3)配列の重複数
9537 ワード
package ;
/**
* n 0~n-1 。
* 。 ,
* 。 。
* , 7 {2,3,1,0,2,5,3}, 2 3。
*/
/**
* :1. map ,
* 2. n , 0~n-1 {0,1,2,...,n-1}
* , , , ,
* 3. : 0 0 0
* array[0] 2 2 array[2] 2 array[2] 1 {1,3,2,0,2,5,3}
* {3,1,2,0,2,5,3}
* {0,1,2,3,2,5,3}
* array[4] 2 array[2] 2
*
*/
public class ArrayCommon {
public static int duplicate(int[] array) {
//
int temp;
//
if (array.length == 0){
return -1;
}
//
for(int i=0;i<array.length;i++)
{
if(array[i]<0||array[i]>array.length-1)
{
return -3;
}
}
//
for (int i = 0; i < array.length; i++) {
if (array[i] != i) {
if (array[i] == array[array[i]]){
return array[i];
}
temp = array[i];
array[i] = array[temp];
array[temp] = temp;
}
}
return -1;
}
public static void main(String[] args) {
int[] array = new int[]{2,3,1,0,2,5,3};
int num = duplicate(array);
if (num == -1) {
System.out.println(" ");
}
else if (num == -3) {
System.out.println(" 0~n-1");
}
else{
System.out.println(" "+num);
}
}
}