当前位置:网站首页>leetcode 268. 丢失的数字(异或!!)
leetcode 268. 丢失的数字(异或!!)
2022-08-03 20:06:00 【会编程的露娜】
给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。
示例 1:
输入:nums = [3,0,1]
输出:2
解释:n = 3,(n为数组中元素个数)因为有 3 个数字,所以所有的数字都在范围 [0,3] 内。2 是丢失的数字,因为它没有出现在 nums 中。
示例 2:
输入:nums = [9,6,4,2,3,5,7,0,1]
输出:8
解释:n = 9,因为有 9 个数字,所以所有的数字都在范围 [0,9] 内。8 是丢失的数字,因为它没有出现在 nums 中。
提示:
n == nums.length
1 <= n <= 104
0 <= nums[i] <= n
nums 中的所有数字都 独一无二
进阶:你能否实现线性时间复杂度、仅使用额外常数空间的算法解决此问题?
思路一:异或
首先将从0到n的所有值都异或一遍,这样算是将所有的值都记录一遍,再对数组中的每一个值异或,因为同一个数异或2次对原值没有影响,即 a ^ b ^ b =a 。
那么到最后就只剩下没有出现的那个数字了。
class Solution {
public:
int missingNumber(vector<int>& nums) {
int ans=0;
int n=nums.size();
for(int i=0;i<=n;++i)
ans^=i;
for(vector<int>::iterator it=nums.begin();it!=nums.end();++it)
ans^=(*it);
return ans;
}
};
思路二: 作差
先从0一直加到n,记录所有数都出现时的总和 sum,再将数组中的每个值都相加 he,他们的差值(sum-he)即为没有出现的数字。
class Solution {
public:
int missingNumber(vector<int>& nums) {
int sum=0,he=0;
sort(nums.begin(),nums.end());
int n=nums.size();
for(int i=0;i<=n;++i)
sum+=i;
for(vector<int>::iterator it=nums.begin();it!=nums.end();++it)
he+=(*it);
return sum-he;
}
};
思路三:排序
对数组进行排序,如果对应位置的序号和数值不相等,那么序号就是缺失的数字。
class Solution {
public:
int missingNumber(vector<int>& nums) {
sort(nums.begin(),nums.end());
int n=nums.size(),i=0;
for( ;i<n;++i){
if(i!=nums[i])
break;
}
return i; //如果是最后一个数缺失,那么循环结束条件时i==n,最后返回的也是n
}
};
边栏推荐
- Kubernetes资源编排系列之三: Kustomize篇 作者 艄公(杨京华) 雪尧(郭耀星)
- ERROR: You don‘t have the SNMP perl module installed.
- 染料修饰核酸RNA|[email protected] 610/[email protected] 594/Alexa 56
- 揭秘5名运维如何轻松管理数亿级流量系统
- tRNA-m5C转运RNA(tRNA)修饰5-甲基胞嘧啶(m5C)|tRNA修饰m1Am2A (2-methyladenosine)
- (十六)51单片机——红外遥控
- 机器学习中专业术语的个人理解与总结(纯小白)
- 那些年我写过的语言
- 信使mRNA甲基化偶联3-甲基胞嘧啶(m3C)|mRNA-m3C
- 8.3模拟赛总结
猜你喜欢
随机推荐
alicloud3搭建wordpress
LeetCode 1374. 生成每种字符都是奇数个的字符串
Go语言为任意类型添加方法
边缘盒子+时序数据库,美的数字化平台 iBuilding 背后的技术选型
嵌入式分享合集27
LeetCode 899. 有序队列
Pytorch GPU 训练环境搭建
Hinton2022年RobotBrains访谈记录
ES6简介及let、var、const区别
【飞控开发高级教程3】疯壳·开源编队无人机-定高、定点、悬停
汉源高科8光口12电口交换机千兆8光8电12电16电网管型工业以太网交换机
自定义form表单验证
Detailed AST abstract syntax tree
简易电子琴设计(c语言)
调用EasyCVR云台控制接口时,因网络延迟导致云台操作异常该如何解决?
按需视觉识别:愿景和初步方案
基础软件与开发语言开源论坛| ChinaOSC
149. The largest number on a straight line, and check the set
ES6解构赋值--数组解构及对象解构
LeetCode 622. 设计循环队列









