当前位置:网站首页>leetcode 268. Missing Numbers (XOR!!)
leetcode 268. Missing Numbers (XOR!!)
2022-08-03 20:13:00 【Luna programming】
给定一个包含 [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到nAll values of are XORed once,This is to record all the values,Then XOR each value in the array,Because the same number is XORed2times have no effect on the original value,即 a ^ b ^ b =a .
Then in the end, only the number that did not appear is left.
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,Record the sum when all numbers are present sum,Then add each value in the array he,他们的差值(sum-he)That is, the number that does not appear.
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;
}
};
思路三:排序
对数组进行排序,If the serial number and value of the corresponding position are not equal,Then the ordinal is the missing number.
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; //If the last number is missing,Then the loop end conditioni==n,最后返回的也是n
}
};
边栏推荐
- tRNA-m5C转运RNA(tRNA)修饰5-甲基胞嘧啶(m5C)|tRNA修饰m1Am2A (2-methyladenosine)
- Statistical machine learning 】 【 linear regression model
- 友宏医疗与Actxa签署Pre-M Diabetes TM 战略合作协议
- 2022 年值得尝试的 7 个 MQTT 客户端工具
- 软件测试基本流程有哪些?权威的第三方软件检测机构推荐
- php根据两点经纬度计算距离
- 为什么 BI 软件都搞不定关联分析
- RNA-ATTO 390|RNA-ATTO 425|RNA-ATTO 465|RNA-ATTO 488|RNA-ATTO 495|RNA-ATTO 520近红外荧光染料标记核糖核酸RNA
- Why BI software can't handle correlation analysis
- JWT详解
猜你喜欢
Detailed demonstration pytorch framework implementations old photo repair (GPU)
149. The largest number on a straight line, and check the set
622 设计循环队列——Leetcode天天刷【循环队列,数组模拟,双指针】(2022.8.2)
NNLM、RNNLM等语言模型 实现 下一单词预测(next-word prediction)
【飞控开发高级教程4】疯壳·开源编队无人机-360 度翻滚
RNA核糖核酸修饰RNA-HiLyte FluorTM 405荧光染料|RNA-HiLyte FluorTM 405
5 款漏洞扫描工具:实用、强力、全面(含开源)
pytorch框架实现老照片修复功能详细演示(GPU版)
使用 ReportLab 绘制 PDF
- [email protected] 594/[email prote"/>
RNA核糖核酸修饰Alexa 568/[email protected] 594/[email prote
随机推荐
matplotlib画polygon, circle
微导纳米IPO过会:年营收4.28亿 君联与高瓴是股东
模板字符串概述
CSDN帐号管理规范
李沐动手学深度学习V2-BERT微调和代码实现
盲埋孔PCB叠孔设计的利与弊
tensorflow-gpu2.4.1安装配置详细步骤
【微信小程序2】事件传参与数据同步[03]
ESP8266-Arduino编程实例-WS2812驱动
(十六)51单片机——红外遥控
调用EasyCVR接口时视频流请求出现404,并报错SSL Error,是什么原因?
一种能有效缓解环境噪声对音频质量干扰的方案
JS 内置构造函数 扩展 prototype 继承 借用构造函数 组合式 原型式creat 寄生式 寄生组合式 call apply instanceof
机器学习中专业术语的个人理解与总结(纯小白)
Detailed steps for tensorflow-gpu2.4.1 installation and configuration
Leetcode sword refers to Offer 15. 1 in the binary number
面试官:为什么 0.1 + 0.2 == 0.300000004?
List类的超详细解析!(超2w+字)
【leetcode】剑指 Offer II 009. 乘积小于 K 的子数组(滑动窗口、双指针)
嵌入式分享合集27