268. 丢失的数字

难度 简单
给定一个包含 [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 <= 104
  • 0 <= nums[i] <= n
  • nums 中的所有数字都 独一无二

进阶:你能否实现线性时间复杂度、仅使用额外常数空间的算法解决此问题?

题解

思路:排序
把nums数组排序
找出第一个下标和值不相等的返回索引
找不到,就返回数组长度
class Solution {public int missingNumber(int[] nums) {int i;Arrays.sort(nums);for(i=0;i<nums.length;i++){if(nums[i]!=i){break;    }}return i;}
}

思路:计数
新建一个ns数组用来存储对应nums是否缺失
所以ns比nums长1
ns的下标对应nums的元素
ns的值对应是否缺失(0是缺失,非0是不缺失)
class Solution {public int missingNumber(int[] nums) {int n=nums.length;int m=n+1;int[] ns=new int [m];for(int i=0;i<n;i++){ns[nums[i]]++;}int i;for(i=0;i<m;i++){if(ns[i]==0){break;}}return i;}
}

官方

思路:位运算
因为两个相同的数异或等于0
一个数与0异或等于它自己
所以把数组nums增加[0,n]数
其中缺失的数只一个
其他数都是两个
class Solution {public int missingNumber(int[] nums) {int n=nums.length;int m=2*n+1;int[] ns=new int [m];for(int i=0;i<m;i++){if(i<n){ns[i]=nums[i];}else{ns[i]=i-n;}}int miss=0;for(int i=0;i<m;i++){miss^=ns[i];}return miss;}
}

官方

class Solution {public int missingNumber(int[] nums) {int xor = 0;int n = nums.length;for (int i = 0; i < n; i++) {xor ^= nums[i];}for (int i = 0; i <= n; i++) {xor ^= i;}return xor;}
}

思路:数学求和
[0,n]求和
和数组求和之差就是缺失的数
class Solution {public int missingNumber(int[] nums) {int n=nums.length;int sum=0;for(int i=0;i<n;i++){sum+=nums[i];          }int total=(0+n)*(n+1)/2;return total-sum;}
}

268. 丢失的数字【我亦无他唯手熟尔】相关推荐

  1. 136. 只出现一次的数字【我亦无他唯手熟尔】

    136. 只出现一次的数字 136. 只出现一次的数字 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素.说明:你的算法应该具有线性时间复杂度. 你 ...

  2. 438. 找到字符串中所有字母异位词【我亦无他唯手熟尔】

    438. 找到字符串中所有字母异位词 438. 找到字符串中所有字母异位词 题解 官方 438. 找到字符串中所有字母异位词 难度 中等 给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 ...

  3. 786. 第 K 个最小的素数分数【我亦无他唯手熟尔】

    786. 第 K 个最小的素数分数 786. 第 K 个最小的素数分数 题解 786. 第 K 个最小的素数分数 难度 困难 给你一个按递增顺序排序的数组 arr 和一个整数 k .数组 arr 由 ...

  4. 237. 删除链表中的节点【我亦无他唯手熟尔】

    237. 删除链表中的节点 请编写一个函数,用于 删除单链表中某个特定节点 .在设计函数时需要注意,你无法访问链表的头节点 head ,只能直接访问 要被删除的节点 . 题目数据保证需要删除的节点 不 ...

  5. 1929. 数组串联【我亦无他唯手熟尔】

    1929. 数组串联 题目 题解 题目 给你一个长度为 n 的整数数组 nums .请你构建一个长度为 2n 的答案数组 ans ,数组下标 从 0 开始计数 ,对于所有 0 <= i < ...

  6. 樊登读书搞定读后感_读书笔记/读后感《读懂一本书,樊登读书法》——无他唯手熟尔...

    当我们在生活及工作中遇到问题的时候,通常会请教同事或者上网搜索解决方法,但是我们忽略了另外一个解决问题的途径,那就是通过阅读书籍积累知识.为什么大家并不习惯于阅读书籍呢,那是因为大家认为眼前遇到问题最 ...

  7. 卖油翁 欧阳修 无他,但手熟尔

    陈康肃公尧咨善射,当世无双,公亦以此自矜.尝射于家圃,有卖油翁释担而立,睨之,久而不去.见其发矢十中八九,但微颔之. 康肃问曰:"汝亦知射乎?吾射不亦精乎?"翁曰:"无他 ...

  8. 编程思想:我亦无他,唯手熟尔

    目录 一.编程思想三大定理 二.编程思想四大特性 三.做到高内聚,低耦合 (一)内聚 (二)耦合 一.编程思想三大定理 (1)思路分析,化繁为简:将需求拆成多个步骤实现,先完成基本功能和大致框架,在往 ...

  9. LeetCode Algorithm 268. 丢失的数字

    268. 丢失的数字 Ideas 先排序,排完序之后如果不缺失数字的话,索引和值应该是相等的,所以我们只需要找到第一个索引和值不相等的元素就可以了,说明缺失的是索引代表的值. 如果找到最后发现都没有对 ...

  10. Leecode 268. 丢失的数字——Leecode每日一题系列

    今天是坚持每日一题打卡的第十一天 题目链接:https://leetcode-cn.com/problems/missing-number// 题解汇总:https://zhanglong.blog. ...

最新文章

  1. 校园音乐点歌平台的设计与开发 微信小程序 点歌系统 java 开发
  2. 长沙城南学院的计算机科学,长沙理工大学城南学院计算机科学与技术专业2016年在海南理科高考录取最低分数线...
  3. Idea+Jconsole实现线程监控
  4. POJ 3237 Tree (树链剖分)
  5. windows内存管理概述
  6. AB1601移植二维码编码库注意事项
  7. windows live writer test…
  8. 13-jdbc分页+事务
  9. Linux(centos7)安装nginx并配置代理
  10. 【MySQL】明明加了索引,为何不生效?
  11. Java排序算法(一)——归并排序
  12. iPhone6爆炸真是小概率事件吗?
  13. idea下搭建vue开发环境
  14. Drools(BRMS) 速成教程(上)
  15. abs在c 语言中的作用,c语言中abs是什么意思
  16. wps插入公式与文字不平行问题解决办法
  17. 移动端文字向左无缝滚动特效(原生纯js哦)
  18. 视频教程-大数据与数据仓库入门到精通-Hadoop
  19. Debian6.02 终端中文设置--FBTerm + ucimf
  20. ncre报名系统服务器不可用,新版NCRE考试系统问题及解决方法.doc

热门文章

  1. 如何安装故障恢复控制台
  2. 一款综合短网址缩短和还原源码
  3. 使用theano出错问题
  4. android 内存至少一半,极客修:为什么iPhone比安卓内存小,却更流畅?
  5. ios13 微信提示音插件_iOS13免越狱修改微信提示音方法!亲测有用!
  6. python的江湖世界
  7. ept技术_EPT和VPID简介 - osc_3xz91vxi的个人空间 - OSCHINA - 中文开源技术交流社区
  8. lisp 圆柱螺旋线_AutoCAD.Lisp等距3D螺旋线
  9. 10827 - Maximum sum on a torus
  10. 大三实习生面试BAT经验