题目

给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。
示例 1:
输入:nums = [3,0,1]
输出:2
解释:n = 3,因为有 3 个数字,所以所有的数字都在范围 [0,3] 内。2 是丢失的数字,因为它没有出现在 nums 中。
示例 2:
输入:nums = [0,1]
输出:2
解释:n = 2,因为有 2 个数字,所以所有的数字都在范围 [0,2] 内。2 是丢失的数字,因为它没有出现在 nums 中。
示例 3:
输入:nums = [9,6,4,2,3,5,7,0,1]
输出:8
解释:n = 9,因为有 9 个数字,所以所有的数字都在范围 [0,9] 内。8 是丢失的数字,因为它没有出现在 nums 中。
示例 4:
输入:nums = [0]
输出:1
解释:n = 1,因为有 1 个数字,所以所有的数字都在范围 [0,1] 内。1 是丢失的数字,因为它没有出现在 nums 中。
提示:
n == nums.length
1 <= n <= 10^4
0 <= nums[i] <= n
nums 中的所有数字都 独一无二
来源:力扣(LeetCode)

解题思路

  题目比较简单,可以先生成一个完整的序列然后遍历整个完整的序列一个一个对比看看是否在nums中,如果不在返回当前数字即可,但是这种做法的时间复杂度达到了O(n^2)。

class Solution:def missingNumber(self, nums: List[int]) -> int:n=len(nums)for i in range(n+1):if i not in nums:breakreturn i


  最直观,最基础的优化便是进行哈希映射,使得我们每一次对比一个数字的时候最好瞬间就能定位,而python中set的机制就是先进行hash如果hash中了之后再进行对比,这样便大大缩短了运行时间,时间复杂度可降至O(n)

class Solution:def missingNumber(self, nums: List[int]) -> int:s=set(nums)for i in range(len(nums)+1):if i not in s:breakreturn i

LeetCode简单题之丢失的数字相关推荐

  1. LeetCode简单题之将所有数字用字符替换

    题目 给你一个下标从 0 开始的字符串 s ,它的 偶数 下标处为小写英文字母,奇数 下标处为数字. 定义一个函数 shift(c, x) ,其中 c 是一个字符且 x 是一个数字,函数返回字母表中 ...

  2. LeetCode简单题之有多少小于当前数字的数字

    题目 给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目. 换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i ...

  3. LeetCode简单题之检查句子中的数字是否递增

    题目 句子是由若干 token 组成的一个列表,token 间用 单个 空格分隔,句子没有前导或尾随空格.每个 token 要么是一个由数字 0-9 组成的不含前导零的 正整数 ,要么是一个由小写英文 ...

  4. LeetCode简单题之猜数字大小

    题目 猜数字游戏的规则如下: 每轮游戏,我都会从 1 到 n 随机选择一个数字. 请你猜选出的是哪个数字. 如果你猜错了,我会告诉你,你猜测的数字比我选出的数字是大了还是小了. 你可以通过调用一个预先 ...

  5. LeetCode简单题之找到所有数组中消失的数字

    题目 给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内.请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果. 示例 1 ...

  6. LeetCode简单题之字符串转化后的各位数字之和

    题目 给你一个由小写字母组成的字符串 s ,以及一个整数 k . 首先,用字母在字母表中的位置替换该字母,将 s 转化 为一个整数(也就是,'a' 用 1 替换,'b' 用 2 替换,- 'z' 用 ...

  7. LeetCode简单题之K 进制表示下的各位数字总和

    题目 给你一个整数 n(10 进制)和一个基数 k ,请你将 n 从 10 进制表示转换为 k 进制表示,计算并返回转换后各位数字的 总和 . 转换后,各位数字应当视作是 10 进制数字,且它们的总和 ...

  8. LeetCode简单题之数字转换为十六进制数

    题目 给定一个整数,编写一个算法将这个数转换为十六进制数.对于负整数,我们通常使用 补码运算 方法. 注意: 十六进制中所有字母(a-f)都必须是小写. 十六进制字符串中不能包含多余的前导零.如果要转 ...

  9. LeetCode简单题之至少是其他数字两倍的最大数

    题目 给你一个整数数组 nums ,其中总是存在 唯一的 一个最大整数 . 请你找出数组中的最大元素并检查它是否 至少是数组中每个其他数字的两倍 .如果是,则返回 最大元素的下标 ,否则返回 -1 . ...

最新文章

  1. MySQL的编译安装
  2. 帝国cms万能通用api二次开发核心包使用说明
  3. 爱情,没有对不起;只有不珍惜……[
  4. 单核工作法12:现在专注一件事(下)
  5. 计算机系统维护技术txt,计算机系统维护技术A卷
  6. pip升级后Import Error:cannot import name main解决方案
  7. 【招聘(深圳)】敢为软件技术有限公司 .Net 工程师
  8. 判断一个字符串在另一个字符串中出现的次数
  9. 西安工程大学计算机科学学院刘宝宝,计算机科学学院召开研究生国家奖学金答辩会...
  10. Alibaba Nacos配置中心功能介绍与不同命名空间、分组等配置
  11. eclipse检测不到android的手机
  12. Cookies 、 Session 和 token 的区别
  13. 厨房手工工具行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  14. 哪些英语母语者常用的词组对于普通中国大学生来说是生疏的?
  15. 云路php解密网站源码_云路PHP解密-免费PHP文件解密工具
  16. mysql handlersocket,MySQL-HandlerSocket交易
  17. HTML基础跟着李南江学编程
  18. mac iphone模拟器_在Mac上找到iPhone和iPad模拟器
  19. Aggressive cows题目翻译
  20. Java 架构师是怎样练成的

热门文章

  1. 2022-2028年中国PET薄膜行业市场深度分析及未来趋势预测报告
  2. c/c++的内存四区
  3. python中的新式类与旧式类的一些基于descriptor的概念(下)
  4. GPT-3 Finetune
  5. 如何使用TensorCores优化卷积
  6. 行人检测与重识别!SOTA算法
  7. Action4D:人群和杂物中的在线动作识别:CVPR209论文阅读
  8. 2021年大数据常用语言Scala(三十一):scala面向对象 特质(trait)
  9. Python:模拟登录、点击和执行 JavaScript 语句案例
  10. [递归]一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。