倒是和leetcode 287 寻找重复数很像。。但是不能使用那道题的快慢指针法(也可能是我太菜了) 重点在于题干的描述【长度为 n 的数组,数字范围【0 ~ n - 1】 class  Solution  { public  int  findRepeatNumber ( int [ ]  nums)  { Set < Integer > =  new  HashSet < > ( ) ; for ( int  i :  nums) { if ( hashset. contains ( i) ) { return  i; } hashset. add ( i) ; } return  - 1 ; } 
} 
class  Solution  { public  int  findRepeatNumber ( int [ ]  nums)  { for ( int  i =  0 ;  i <  nums. length;  i++ ) { while ( nums[ i]  !=  i) { if ( nums[ nums[ i] ]  ==  nums[ i] ) { return  nums[ i] ; } int  temp =  nums[ nums[ i] ] ; nums[ nums[ i] ]  =  nums[ i] ; nums[ i]  =  temp; } } return  - 1 ; } 
} 
哟,用了个新方法! 不过还是会稍微慢一点(毕竟跑两次) 但是很好理解:数值出现一次,就对对应下标的存储值加长度,加了两次以上就说明重复。 class  Solution  { public  int  findRepeatNumber ( int [ ]  nums)  { for ( int  temp :  nums)  { nums[ temp %  nums. length]  +=  nums. length; } for ( int  i =  0 ;  i <  nums. length;  i++ )  { if ( nums[ i]  >=  2  *  nums. length)  { return  i; } } return  - 1 ; } 
}