题目

https://leetcode-cn.com/problems/missing-number/


题解

解法 1

本题要求线性时间复杂度、仅使用额外常数空间的算法解决此问题,其实质是一个数学问题。

由于给定的数组本应包含从 0 到 n 范围内的所有数字,故可以将其看做一个首项为 0,尾项为length,步增为 1 的等差数列

因此,求“缺项”的问题,可以转化为:先求等差数列前 n 项和,再减去已经存在的每一项 的问题。

本算法的时间复杂度为O(n),空间复杂度为O(1)

package test;public class Solution {public int missingNumber(int[] nums) {int sum = (0 + nums.length) * (nums.length + 1) / 2; // 等差数列求和for (int i = 0; i < nums.length; i++) {sum -= nums[i];}return sum;}
}

解法 2

好像和以前的一道题(只出现一次的数字)有异曲同工之处。看了大家的题解,异或操作(^)是一种很好的方式,不用考虑 sum 越界问题。

举个例子:

0 ^ 4 = 4
4 ^ 4 = 0

那么,就可以不用求和,直接使用异或运算^进行 抵消,剩下的数字就是缺失的了。

再举个例子:

1^1^2^2^3 = 3

代码:

int missingNumber(vector<int>& nums) {int res = nums.size();for (int i = 0; i < nums.size(); ++i){res ^= nums[i];res ^= i;}return res;
}

leetcode 268. 丢失的数字(Java版)相关推荐

  1. LeetCode Algorithm 268. 丢失的数字

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

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

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

  3. leetcode -874 - 模拟行走机器人 - java版

    文章目录 题目 代码 题目 机器人在一个无限大小的网格上行走,从点 (0, 0) 处开始出发,面向北方.该机器人可以接收以下三种类型的命令: -2:向左转 90 度 -1:向右转 90 度 1 < ...

  4. 【leetcode刷题】72.6 和 9 组成的最大数字 ——Java版

    ⭐欢迎订阅<leetcode>专栏,每日一题,每天进步⭐ 一行代码:第一次替换的,一定是最大的结果. --leetcode此题热评 前言 哈喽,大家好,我是一条. 糊涂算法,难得糊涂 点击 ...

  5. 来自北大算法课的Leetcode题解:268. 丢失的数字

    代码仓库:Github | Leetcode solutions @doubleZ0108 from Peking University. 解法1(T45% S22%):排序,遍历数组序号,如果数组元 ...

  6. 力扣268.丢失的数字

    解题思路 此题使用位运算较简单,根据异或运算,a^a=0,a^0=a 将nums全部元素异或,同时异或i即可得到不成对的数字,这就是丢失的那个数字 代码 int missingNumber(int* ...

  7. 力扣: 268. 丢失的数字

    思路1: 用bool数组标记数字是否出现,输出没有出现的数字. 注意bool数组要比nums数组大1,防止少的是最后一个元素 int missingNumber(int* nums, int nums ...

  8. leetcode 506. 相对名次(Java版)

    题目 https://leetcode-cn.com/problems/relative-ranks/ 题解 思路主要是,将运动员一开始的位置记录下来,方便颁奖的时候去指定位置颁给指定的人. 先用ma ...

  9. leetcode 455. 分发饼干(Java版)

    题目 https://leetcode-cn.com/problems/assign-cookies/ 题解 先给两个数组从小到大排序.然后用双指针法: gIndex 表示 孩下标,sIndex 表示 ...

最新文章

  1. PHP 分布式集群中session共享问题以及session有效期的设置
  2. 快速学习使用springmvc、strust2、strust1以及它们的对比
  3. 本地创建分支push到github
  4. LINQ TO OBJECT
  5. MySQL集群之五大常见的MySQL高可用方案(转)
  6. ASP.NET调用WCF服务
  7. 轻松解决Mac和Windows中Unity汉化问题
  8. 黑马程序员, html css javascript 前端笔记 pink老师教程
  9. 2048小游戏——网页版(基础篇)
  10. 首台自主创新全空冷机组在三峡运行,图扑数字孪生机体
  11. Linux关于qt缺少xcb问题解决办法
  12. InnoDB下SQL执行底层原理和redolog、binlog
  13. echarts标题(title)设置背景图片
  14. 今日头条Go建千亿级微服务的实践
  15. (Note)阿克西斯ACASIS DT-3608双盘位硬盘阵列盒RAID设置
  16. 数据结构--堆Heap
  17. 图片头顶距离顶部百分比怎么修改_PS中,新手该怎么修改图像尺寸?看老师傅们都采用哪些方法?...
  18. How I Hacked Facebook with a Word Document
  19. 内网渗透之CFS三层靶场渗透
  20. lol更新显示正在连接服务器,lol提示无法连接服务器请检查你的网络并重新连接的解决方法...

热门文章

  1. HDU1058 Humble Numbers
  2. 深入sql server中的事务
  3. CImage类显示图片
  4. QUIC学习笔记之 如何做到0RTT加密传输
  5. QUIC 是如何解决TCP 性能瓶颈的?
  6. 吐血整理 | 肝翻 Linux 进程调度所有知识点|中奖揭晓
  7. CI/CD大幅减少甩锅!
  8. 高并发服务遇 redis 瓶颈引发的事故
  9. 数据结构--图(Graph)详解(四)
  10. 张霖峰:AV1和VVC的格局将在2023年后明朗