问题描述
Given an array containing n distinct numbers taken from 0, 1, 2, …, n, find the one that is missing from the array.
Example 1
Input: [3,0,1]
Output: 2
Example 2
Input: [9,6,4,2,3,5,7,0,1]
Output: 8
Note:
Your algorithm should run in linear runtime complexity. Could you implement it using only constant extra space complexity?
思路分析
给一个从1到n,n个数的数组,其中有个数变成了0,找到这个数。
又是个数学题,丢失的数字就是1到n的等差数列求和的和减去数组中元素的和。
代码
class Solution {
public:
int missingNumber(vector<int>& nums) {
int a = (nums.size()*(nums.size() + 1)) / 2;
int b = 0;
for (int i = 0; i < nums.size(); i++)
b += nums[i];
return a-b;
}
};
时间复杂度:
O(n)
空间复杂度:
O(1)
反思
没什么难度的题目。