1.借助快速排序
时间复杂度(o(nlogn)+o(n)) 空间复杂度o(1)
相邻两数 差为2及为缺少的数字
//核心代码
QuickSort quickSort=new QuickSort(array);
quickSort.sort();
for(int i=1;i<array.length;i++){
if(array[i]!=i+1){
sysout("缺失数字为"+array[i]+1);
return;
}
}
2.借助散列表
时间复杂度o(n) 空间复杂度散列空间复杂度
//核心代码
HashTable hashTable=new HashTable();
for(int i=0;i<array.length;i++){
hashTable.put(array[i],1);
}
for(int i=1;i=100;i++){
if(hashTable.get(i)==-1){
sysout("缺失数字为"+i);
return;
}
}
3.巧妙解决(比较难想到)
1-100
(1+100)*100/2 =5050 5050-sum=缺失数
//核心代码
int all=(1+100)*100/2
for(int i=0;i<array.length;i++){
all-=array[i];
}
sysout("缺失数字为"+all);