试了一下array按顺序输出。是这样的,输出结果是[0, 1, 3]。
import java.util.Arrays;
public class Test {
public static void main(String args[]) {
int[] array= {3,0,1};
Arrays.sort(array);
System.out.println(Arrays.toString(array));
}
}
本题暴力法:
class Solution {
public int missingNumber(int[] nums) {
Arrays.sort(nums);
int i;
for(i=0;i<nums.length;i++){
if(nums[i]!=i){
break;
}
}
return i;
}
}
第二种办法,异或。即1^1=0,1^2=1
class Solution {
public int missingNumber(int[] nums) {
int result=nums.length;
for(int i=0;i<nums.length;i++){
result=i^result^nums[i];
}
return result;
}
}
还有一种哈希表的做法
class Solution {
public int missingNumber(int[] nums) {
HashMap<Integer,Boolean> map=new HashMap<Integer,Boolean>();
int i;
for(i=0;i<=nums.length;i++){
map.put(i,false);
}
for(i=0;i<nums.length;i++){ // 若“该key”对应的键值对已经存在,则用新的value取代旧的value。然后退出!
map.put(nums[i],true);
}
for(i=0;i<=nums.length;i++){
if(!map.get(i)){//获取map中键值为“key”的值
return i;
}
}
return -1;
}
}