Leetcode面试题 17.04.消失的数字【位运算】

文章目录

  • 问题描述
  • 解题报告
  • 实现代码
  • 参考资料

问题描述

数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗?

解题报告

  • 数学解法
    1 + 2 + ⋯ + n 1+2+\cdots +n 1+2++n 的和减去数组的加和,即为所求。

  • 异或解法
    在原数组的基础上,加上 1 , 2 , ⋯   , n 1,2,\cdots, n 1,2,,n,除了缺失的那个数只出现一次,其他数出现了2次。

实现代码

class Solution {
public:
    int missingNumber(vector<int>& nums) {
        // int sum=0;
        // for(int i=0;i
        // return (nums.size()+1)*nums.size()/2-sum;
        int ans=0;
        for(int i=1;i<=nums.size();i++) ans^=i;
        for(int i=0;i<nums.size();i++) ans^=nums[i];
        return ans;
    }
};

参考资料

[1] Leetcode面试题 17.04.消失的数字

你可能感兴趣的:(leetcode,位运算)