268. Missing Number

题目:未排序的数组从0~n,依次增大的数列中缺少了一个数,是哪个?

方法一:高斯算法

等差数列求和,0~size()+1个数列的和 - 实际给定的数列的和 = 要求数字

参考代码:

 1 class Solution {
 2 public:
 3     int missingNumber(vector<int>& nums) {
 4         int sum = (0 + nums.size()) * (nums.size()+1) /2;
 5         int realsum = 0;
 6         for(int i : nums){
 7             realsum += i;
 8         }
 9         return sum-realsum;
10     }
11 };

方法二:位置 异或 数值

Index 0 1 2 3
Value 0 1 3 4
missing​=4∧(0∧0)∧(1∧1)∧(2∧3)∧(3∧4) = size() ∧ (各位置∧各数值)

          =(4∧4)∧(0∧0)∧(1∧1)∧(3∧3)∧2

          =0∧0∧0∧0∧2

          =2​

参考代码:

 1 class Solution {
 2 public:
 3     int missingNumber(vector<int>& nums) {
 4         int len = nums.size();
 5         for(int i=0; i<nums.size(); i++){
 6             len ^= (nums[i] ^ i);
 7         }
 8         return len;
 9     }
10 };
原文地址:https://www.cnblogs.com/habibah-chang/p/12388980.html