Missing number

Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one that is missing from the array.

For example,
Given nums = [0, 1, 3] return 2.

Note:

Your algorithm should run in linear runtime complexity. Could you implement it using only constant extra space complexity?


方法一:

求和相减得到的就是消失的。

[cpp]  view plain  copy
  1. class Solution {  
  2. public:  
  3.     int missingNumber(vector<int>& nums) {  
  4.         int len = nums.size();  
  5.         int sum = (1 + len)*len / 2;  
  6.         int sum2 = 0;  
  7.         for (int n : nums){  
  8.             sum2 += n;  
  9.         }  
  10.         return sum - sum2;  
  11.     }  
  12. };  

方法二:异或

 

137. Single Number II   

260. Single Number III 类似

[cpp]  view plain  copy
  1. class Solution {  
  2. public:  
  3.     int missingNumber(vector<int>& nums) {  
  4.         int res=0;  
  5.         for(int i=0;i<nums.size();i++){  
  6.             res^=(i+1)^nums[i];  
  7.         }  
  8.         return res;  
  9.     }  
  10. };  

猜你喜欢

转载自blog.csdn.net/zhangbaoanhadoop/article/details/80074156