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

    科技2022-08-19  109

    题目:

    数组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; }

     

    Processed: 0.008, SQL: 9