( 位运算 ) 268. 丢失的数字 ——【Leetcode每日一题】

news2024/9/21 22:45:33

❓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 < = 1 0 4 1 <= n <= 10^4 1<=n<=104
  • 0 <= nums[i] <= n
  • nums 中的所有数字都 独一无二

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

💡思路:

基础知识必知:位运算基本原理

仅用线性复杂度和额外常数空间,基本上就是使用位运算了!

两个相同的数异或的结果为 0

  • 所有数以及数组下标 [0, n] 进行异或操作,最后的结果就是单独出现的那个数。

🍁代码:(Java、C++)

Java

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

C++

class Solution {
public:
    int missingNumber(vector<int>& nums) {
        int ans = 0;
        for(int i = 0; i < nums.size(); i++){
            ans = ans ^ (i + 1) ^ nums[i];
        }
        return ans;
    }
};

🚀 运行结果:

在这里插入图片描述

🕔 复杂度分析:

  • 时间复杂度 O ( n ) O(n) O(n),其中 n 为数组的长度。
  • 空间复杂度 O ( 1 ) O(1) O(1)

题目来源:力扣。

放弃一件事很容易,每天能坚持一件事一定很酷,一起每日一题吧!
关注我 leetCode专栏,每日更新!

注: 如有不足,欢迎指正!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/506068.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

正则表达式 - 匹配 Unicode 和其他字符

目录 一、匹配 Unicode 字符 1. 匹配 emoji 符号 &#xff08;1&#xff09;确定 emoji 符号的 Unicode 范围 &#xff08;2&#xff09;emoji 符号的存储 &#xff08;3&#xff09;正则表达式匹配 2. 匹配中文 &#xff08;1&#xff09;确定中文的 Unicode 范围 &am…

PostgreSQL-HA 高可用集群在 Rainbond 上的部署方案

PostgreSQL 是一种流行的开源关系型数据库管理系统。它提供了标准的SQL语言接口用于操作数据库。 repmgr 是一个用于 PostgreSQL 数据库复制管理的开源工具。它提供了自动化的复制管理&#xff0c;包括&#xff1a; 故障检测和自动故障切换&#xff1a;repmgr 可以检测到主服…

二叉搜索树中的插入操作

1题目 给定二叉搜索树&#xff08;BST&#xff09;的根节点 root 和要插入树中的值 value &#xff0c;将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 &#xff0c;新值和原始二叉搜索树中的任意节点值都不同。 注意&#xff0c;可能存在多种有效的插入…

YOLOv3论文解读/总结

本章论文&#xff1a; YOLOv3论文&#xff08;YOLOv3: An Incremental Improvement&#xff09;&#xff08;原文&#xff0b;解读/总结&#xff0b;翻译&#xff09; 系列论文&#xff1a; YOLOv1论文解读/总结_yolo论文原文_耿鬼喝椰汁的博客-CSDN博客 YOLOv2论文解读/总…

try(){}用法try-with-resources、try-catch-finally

属于Java7的新特性。 经常会用try-catch来捕获有可能抛出异常的代码。如果其中还涉及到资源的使用的话&#xff0c;最后在finally块中显示的释放掉有可能被占用的资源。 但是如果资源类已经实现了AutoCloseable这个接口的话&#xff0c;可以在try()括号中可以写操作资源的语句(…

cocos 项目实践总结

文章目录 组件文档的理解&#xff1a;开发过程顺序问题&#xff1a;1、获取锚点坐标2、事件监听3、批量生成选词按钮4、Button可以自定义边界、边界颜色、及弧度一些问题记录1、button点击过后重新恢复页面渲染&#xff0c;button的状态偶发还是点击态而非正常态2、偶发事件绑定…

【自动驾驶基础入门】SLAM应该怎么学习?

1、SLAM是什么&#xff1f; SLAM是Simultaneous Localization and Mapping的缩写&#xff0c;即同时定位与地图构建。也称为自主机器人导航或者无人车等领域的基本任务之一。 简单来说&#xff0c;SLAM是指在未知环境中&#xff0c;通过移动机器人并利用其搭载的各种传感器数据…

Yolov5训练日记~如何用Yolov5训练识别自己想要的模型~

目录 一.数据集准备 二.标签设置 三.模型训练 四.模型测试 最近尝试了Yolov5训练识别人体&#xff0c;用的是自己尝试做的训练集。见识到Yolo的强大后&#xff0c;决定分享给大家。 一.数据集准备 数据集是从百度图片上下载的&#xff0c;我当然不可能一个一个下载&#xff…

还没用过这12款建筑设计软件?你OUT了

每个建筑设计软件都针对不同的需求。选择最好的一个取决于许多因素&#xff0c;例如成本、与其他程序的兼容性以及您愿意花在绘图过程上的时间。它还取决于您在设计过程中所处的位置——我们可能都开始在纸上画草图&#xff0c;然后转向建筑软件。我们甚至需要图形设计软件来说…

Haoop集群的搭建(小白教学)

搭建hadoop集群我们必须拥有自己的虚拟机&#xff0c;下列我会给大家奉上超详细的集群搭建以及我在搭建的时候碰到的问题以及对应解决办法&#xff0c;正所谓自己走过的错路是曲折的&#xff0c;也是防止大家做弯路&#xff0c;不仅浪费时间还心态爆炸&#xff0c;下面带走入ha…

蜘蛛池搭建需要多少域名?全面解析!

蜘蛛池是指为搜索引擎爬虫提供优质、可靠的页面&#xff0c;从而提高网站的收录和排名。在蜘蛛池搭建过程中&#xff0c;域名数量是一个非常重要的问题。那么&#xff0c;蜘蛛池搭建需要多少域名呢&#xff1f;本文将对这个问题进行全面解析。 首先&#xff0c;我们需要了解什么…

SQL教程

1、基础 演示数据库&#xff0c;下面是选自 “Websites” 表的数据&#xff1a; SELECT 语句用于从数据库中选取数据。 SELECT name,country FROM Websites;SELECT DISTINCT 语句用于返回唯一不同的值。 SELECT DISTINCT country FROM Websites;WHERE 子句用于提取那些满足…

二十三种设计模式第五篇--原型模式

原型模式&#xff08;Prototype Pattern&#xff09;是用于创建重复的对象&#xff0c;同时又能保证性能。这种类型的设计模式属于创建型模式&#xff0c;它提供了一种创建对象的最佳方式。 这种模式是实现了一个原型接口&#xff0c;该接口用于创建当前对象的克隆。当直接创建…

Linux网络——Shell编程之循环

Linux网络——Shell编程之循环 一、循环1.循环与遍历2.循环的优势 二、for 循环语句1.for 语句的结构2.for语句应用示例 三、while 循环语句1.while 语句的结构2.while语句应用示例 四、until 循环五、跳出循环1.break2.continue3.exit 六、死循环 一、循环 定义&#xff1a;循…

2023年适合营销公司使用的十大「社交媒体管理」工具

在遍地都是数字营销公司的时代&#xff0c;对品牌来说&#xff0c;拥有强大的社交媒体影响力以保持竞争力从未如此重要。 而对于管理一个或多个品牌的数字营销公司来说&#xff0c;从内容创作到执行报告&#xff0c;使用正确的工具可以帮助你做到这一点。从规划、管理和跟踪社…

idb使用教程(一)

概述 iOS开发桥&#xff08;idb&#xff09;是一个多功能的工具&#xff0c;用于自动化iOS模拟器和设备。它在一个一致的、对人友好的界面中暴露了很多分布在苹果工具中的功能。 安装 idb由两个部分组成&#xff0c;每个部分都需要单独安装。 idb伴侣 每个目标&#xff08…

《花雕学AI》ChatMind:与AI对话,轻松梳理思路并创建思维导图

引言&#xff1a; 思维导图是一种有效的思维工具&#xff0c;可以帮助用户整理和表达自己的思路&#xff0c;提高学习和工作的效率和质量。然而&#xff0c;传统的思维导图工具往往需要用户花费大量的时间和精力&#xff0c;学习和操作复杂的界面和功能&#xff0c;而且很难根据…

医院智能导诊系统,医院导航解决方案

随着现代医院规模不断扩大&#xff0c;功能区域越来越细化&#xff0c;面对复杂的楼宇结构&#xff0c;集中的就诊人流&#xff0c;患者在就诊中经常会面临找不到目的地的困境&#xff0c;就诊体验变差。针对这个问题&#xff0c;一些面积和规模都比较大的医院&#xff0c;已经…

html实现经典打方块小游戏

文章目录 1.设计来源1.1 主界面1.2 游戏界面1.3 游戏结束界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/130581985 html实现经典打方块小游戏源码 html实现经典打方块…

自主可控不走捷径,中国长城做难且正确的事

2020-2022年是中国信创产业的重要推广期&#xff0c;在国家战略的支持下&#xff0c;自主可控领域诸多相关企业均获得绝佳发展良机。 但信创产业“完成替代”不是终点&#xff0c;“实现领先”方是目标。如今势已启、路尚远&#xff0c;前景广阔的市场并不意味着自主可控相关企…