Leetcode:268. 缺失数字

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:求和依次相减

从0到n的和是固定的,依次减去数组中的每个数即可

代码

代码1

class Solution {
    public int missingNumber(int[] nums) {
        if (nums == null || nums.length == 0){
            return 0;
        }
        int n = nums.length;
        int result = n * (n + 1) / 2;
        for(int num: nums){
            result -= num;
        }
        return result;
    }
}

复杂度分析

思路1时间复杂度

$O(n)$

思路1空间复杂度

$O(1)$


文章作者: 小风雷
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 小风雷 !
评论
 上一篇
Leetcode:326. 3的幂 Leetcode:326. 3的幂
Leetcode:326. 3的幂题目描述给定一个整数,写一个函数来判断它是否是 3 的幂次方。 示例 1:输入: 27 输出: true 示例 2:输入: 0 输出: false 示例 3:输入: 9 输出: true 示例 4:
2020-05-07
下一篇 
Leetcode:190. 颠倒二进制位 Leetcode:190. 颠倒二进制位
Leetcode:190. 颠倒二进制位题目描述颠倒给定的 32 位无符号整数的二进制位。 示例 1:输入: 00000010100101000001111010011100 输出: 001110010111100000101001010
2020-05-05
  目录