leetcode(面试题 17.04) 消失的数字

leetcode(面试题 17.04) 消失的数字_第1张图片
方法一:
先求和,再求差。

class Solution {
public:
    int missingNumber(vector<int>& nums) {
        int sum1=0,sum2=0;
        int l=nums.size();
        for(int i=0;i<=l;i++){
            sum1+=i;
        }
        for(int i=0;i<l;i++){
            sum2+=nums[i];
        }
        return sum1-sum2;
    }
};

方法二:
做标记:
利用vector;

class Solution {
public:
    int missingNumber(vector<int>& nums) {
        int l=nums.size();
        vector<int> vec(l+1,-1);
        for(int i=0;i<l;i++){
            vec[nums[i]]=0;
        }
        for(int i=0;i<l+1;i++){
            if(vec[i]==-1){
                return i;
            }
        }
        return -1;
    }
};

利用map;

class Solution {
public:
    int missingNumber(vector<int>& nums) {
        int l=nums.size();
        unordered_map<int,int> m;
        for(auto i:nums){
            m[i]++;
        }
        int i=0;
        for(;i<l+1;i++){
            if(m.count(i)==0){
                return i;
            }
        }
        return 0;
    }
};

方法三:
异或:

class Solution {
public:
    int missingNumber(vector<int>& nums) {
        int l=nums.size();
        int mul=0;
        for(int i=0;i<l+1;i++){
            mul^=i;
        }
        for(int i=0;i<l;i++){
            mul^=nums[i];
        }
        return mul;
    }
};

你可能感兴趣的:(leetcode)