数组中重复的数字
import java.util.Arrays;
/**
* 题解
* 没有使用额外空间的做法
* 由于是任意一个
* 因为是n个数字,数字区间是[0,n-1]
* 所以可以按照数组的下标判定
* 同时,可以进行有序排序,当下标不等于对应的数字,则与数字对应的下标交换数字,这时,该数字对应的下标是可以的
* 重复此操作
* 当可以找到一个数字下标与这个下标相等就开始扫描下一个数字
* 如果没有一个数字下标和这个数字相等,那么当遍历这个数字的时候,肯定有一个会被替换到这个位置的数字,而这个数字是有两个的
*/
public class ShuZuZhongChongFuDeShuZi {
public boolean duplicate(int numbers[],int length,int [] duplication) {
if(length==0)
return false;
for(int i=0;i<length;i++){
while(i!=numbers[i]){
if(numbers[i]==numbers[numbers[i]]){
duplication[0]=numbers[i];
return true;
}else {
int temp = numbers[i];
numbers[i]=numbers[numbers[i]];
numbers[temp]=temp;
}
}
}
return false;
}
}
数组中重复的数字
最新推荐文章于 2021-08-18 14:43:21 发布