news 2026/2/17 4:53:47

位运算---LC268丢失的数字

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
位运算---LC268丢失的数字

一、题目链接

268. 丢失的数字 - 力扣(LeetCode)

二、题目要求

给定一个包含[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中。

三、解决

1.解法一

暴力解法:数组是缺失[0,n]中的一个数,所以我们先将数组按顺序排好,然后遍历一遍数组就能找到缺失的那个数字了

时间复杂度不推荐。

class Solution { public: int missingNumber(vector<int>& nums) { sort(nums.begin(),nums.end()); for(int i = 0; i < nums.size(); i++) { if(nums[i] != i) return i; } return nums.size(); } };

2.解法二

哈希表:创建一个长度位n+1的数组,这个数组下标就是[0,n],然后遍历原数组,遍历到哪个数就在哈希表的对应下标的值加一,然后再遍历哈希表,哈希表中的值为0的下标就是丢失的数字。

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

3.解法三

高斯求和:先求出[0,n]的和,再求出该数组中所有数字的和。用总和减去数组中的和,剩下的就是丢掉的数字。

class Solution { public: int missingNumber(vector<int>& nums) { int numsSum = 0; int Sum = 0; for(int i = 0; i < nums.size()+1; i++) Sum+=i; for(auto e : nums) numsSum+=e; return Sum-numsSum; } };

4.解法四

位运算:由

①a ^ 0 = a

②a ^ a = 0

③a ^ b ^ c = a ^ (b ^ c)交换律

可以得出解决方法:

创建一个[0,n]的tmp数组,先将原数组中的数字全部异或在一起,然后再将tmp中的数字全部异或在一起,然后让两次异或的结果相互异或,最后就只剩下一个丢失的数字了。

class Solution { public: int missingNumber(vector<int>& nums) { int tmp1 = 0; int tmp2 = 0; for(int i = 0; i<nums.size()+1; i++) tmp1^=i; for(auto e:nums) tmp2^=e; return tmp1^=tmp2; } };

总结:很简单的一道题,但是解法很多,可以帮助初学者入门,这几种方法最好全部掌握。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/3 6:53:48

Z-Image-Turbo中文字体渲染,细节清晰不乱码

Z-Image-Turbo中文字体渲染&#xff0c;细节清晰不乱码 你有没有试过用AI生成一张带中文标题的海报&#xff0c;结果文字糊成一团、笔画粘连、甚至直接显示为方块&#xff1f;或者输入“水墨风书法‘厚德载物’”后&#xff0c;生成图里字形扭曲、结构错位&#xff0c;完全看不…

作者头像 李华
网站建设 2026/2/11 7:24:54

解锁音乐自由:音乐格式转换工具QMCDecode实用指南

解锁音乐自由&#xff1a;音乐格式转换工具QMCDecode实用指南 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac&#xff0c;qmc0,qmc3转mp3, mflac,mflac0等转flac)&#xff0c;仅支持macOS&#xff0c;可自动识别到QQ音乐下载目录&#xff0c;默认转换结…

作者头像 李华
网站建设 2026/2/16 2:18:30

每次重启都要手动启动?不如花5分钟配个自启

每次重启都要手动启动&#xff1f;不如花5分钟配个自启 你是不是也经历过这样的场景&#xff1a;辛辛苦苦调通了一个AI服务&#xff0c;部署好模型&#xff0c;配置完路径&#xff0c;结果一重启——全没了。终端里还得重新cd、source、python run.py……重复操作五次后&#…

作者头像 李华
网站建设 2026/2/16 16:37:46

5分钟上手麦橘超然:零基础开发者快速部署实战

5分钟上手麦橘超然&#xff1a;零基础开发者快速部署实战 1. 为什么你需要一个离线图像生成控制台 你是不是也遇到过这些问题&#xff1a;想试试最新的 Flux 图像生成模型&#xff0c;但被复杂的环境配置卡住&#xff1b;显卡只有 8GB 显存&#xff0c;跑不动官方大模型&…

作者头像 李华
网站建设 2026/2/6 5:43:11

不用买显卡!在线运行Qwen3-0.6B微调项目

不用买显卡&#xff01;在线运行Qwen3-0.6B微调项目 你是否也经历过这样的困扰&#xff1a;想动手微调一个大模型&#xff0c;却被显卡门槛拦在门外&#xff1f;RTX 4090太贵、A100租不起、本地GPU显存告急……别担心&#xff0c;今天这篇指南将彻底打破硬件壁垒——无需购买任…

作者头像 李华
网站建设 2026/2/14 9:47:59

一句话启动微调!Qwen2.5-7B镜像的极致简化设计

一句话启动微调&#xff01;Qwen2.5-7B镜像的极致简化设计 你有没有试过&#xff1a;打开终端&#xff0c;敲一行命令&#xff0c;十分钟后——你的专属大模型就“认得自己”了&#xff1f;不是训练全参数&#xff0c;不是配环境、装依赖、改配置&#xff0c;更不需要反复调试…

作者头像 李华