C练题笔记之:Leetcode-面试题 17.04. 消失的数字
程序员文章站
2022-07-01 23:18:39
...
题目:
数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗?
注意:本题相对书上原题稍作改动
示例 1:
输入:[3,0,1]
输出:2
示例 2:
输入:[9,6,4,2,3,5,7,0,1]
输出:8
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/missing-number-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
结果:
解题思路:
因为数字都是从0开始连续的,因此通过求和算出到numsSize + 1为止的和(也就是0~n+1)的和,然后再把nums中的数字一个个减掉,那么就能找到少的值。
另:因为0~n的数字中少了一个数字,所以必定是0~(n+1)个数字中少一个数字的情况。
代码:
int missingNumber(int* nums, int numsSize){
int sum = (1 + numsSize) * numsSize/2;
for(int i = 0; i < numsSize; i++) {
sum -= nums[i];
}
return sum;
}
上一篇: WPF中TimeSpan的坑