算法1
(其他) $O(n)$
nums数组中的数的和 sum = 0 + 1 + … + (miss-1) + (miss+1) + …+(n+1)
n*(n+1)/2 = 0 + 1 + … + (miss-1) + miss + (miss+1) + …+(n+1) = sum + miss
取二者之差即为所求。
时间复杂度分析:求sum遍历一次nums
C++ 代码
class Solution {
public:
int getMissingNumber(vector<int>& nums) {
int n=nums.size(),sum=0;
for(auto &x:nums) sum+=x;
return n*(n+1)/2-sum;
}
};
佬!牛!膜!
Orz
大佬,你这代码有点简洁
大佬 太强了
orz
为什么是n(n+1)/2呀,数字是从0开始的,等差公式不是n(n-1+0)/2咩,
(首+尾)*项数/2
嘎嘎聪明
佬也是用的前n项和啊,和我想的一样
牛逼