欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

结果:

C练题笔记之:Leetcode-面试题 17.04. 消失的数字

解题思路:

因为数字都是从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;
}