消失的数字

63 阅读1分钟

package org.example.demo;  
  
import java.util.HashSet;  
//消失的数字  
//数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗?  
//  
// 注意:本题相对书上原题稍作改动  
//  
// 示例 1:  
//  
// 输入:[3,0,1]  
// 输出:2  
  
public class MissingNumberSolution {  
    public int missingNumber(int[] nums){  
        HashSet<Integer> set = new HashSet<>();  
        int n=nums.length;  
        for (int i = 0; i <n ; i++) {  
            set.add(nums[i]);  
        }  
        int missing=-1;  
        for (int i = 0; i <=n ; i++) {  
            if(!set.contains(i)){  
                missing=i;  
                break;  
            }  
        }  
        return missing;  
    }  
  
public int missingNumber1(int[] nums){  
    int xor=0;  
    int n=nums.length;  
    for (int i = 0; i < n; i++) {  
        xor^=nums[i];  
    }  
    for (int i = 0; i <= n ; i++) {  
        xor^=i;  
    }  
    return xor;  
}  
  
public int misssingNumber2(int[] nums){  
    int n=nums.length;  
    int total=n*(n+1)/2;  
    int arrSum=0;  
    for (int i = 0; i <n ; i++) {  
        arrSum+=nums[i];  
    }  
    return total-arrSum;  
}  
}