Leetcode 268. 缺失数字
题目
给定一个包含 0, 1, 2, …, n 中 n 个数的序列,找出 0 … n 中没有出现在序列中的那个数。
测试样例
示例 1:
输入: [3,0,1]
输出: 2
示例 2:
输入: [9,6,4,2,3,5,7,0,1]
输出: 8
说明:
你的算法应具有线性时间复杂度。你能否仅使用额外常数空间来实现?
题解
数学法,我们现在求1~n中缺失的数。我们可以知道1+2+3+···+n的和,其值为n*(n-1)/2。让这个值减去数组和便是缺失的数了。详细过程见代码
代码
int missingNumber(vector<int>& nums) {
int n=nums.size()+1;
long sum = n*(n-1)/2;
n--;
for(int i=0; i<n; i++)
sum -= nums[i];
return sum;
}
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/missing-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。