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?
s思路:
1. 一看,又是有限状态。n个数从0-n得到,也就是有一个数不在里面。
2. 还是看问题的边界是啥。n个数,就丢了一个,n个数如果没丢数之和是知道的,然后丢一个数之后也可以计算出来,那么一做减法就可以得到丢的数。
3. 你看,如果只是focus在少的那个数身上怎么找得到。但是我们从相反角度看问题就容易了,少一个数和一个不少就互为相反的角度!
class Solution {
public:
int missingNumber(vector<int>& nums) {
//
int n=nums.size();
int j=1;
int res=0;
for(int i=0;i<n;i++){
res=res+(j++)-nums[i];
}
return res;
}
};