算法题每日一练---第54天:丢失的数字

简介: 给定一个包含 [0, n] 中 n 个数的数组 nums

3.png

一、问题描述


给定一个包含 [0, n]n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。


题目链接:丢失的数字


二、题目要求


样例

输入:nums= [9,6,4,2,3,5,7,0,1]
输出:8解释:n=9,因为有9个数字,所以所有的数字都在范围 [0,9] 内。8是丢失的数字,因为它没有出现在nums中。


考察

位运算、异或问题
建议用时10~30min


三、问题分析


本题是位运算的第9题,没了解过位运算相关知识点可以看这一篇文章,讲解比较详细:

算法题每日一练---第45天:位运算


这一题要注意题目中的数组元素都是个不相同的,我们要找出0~n这一列数字中数组不包含的数字,以样例的数组为例,排序后结果如下:


0123456790123456789


既然是位运算的题目,肯定要用到位运算的相关知识点,这一题假如将上面两行的数字进行异或运算,那么相同的数字就会消掉,而留下的不就是丢失的数字吗?


符号:^

运算规则:两个二进制位相反为1,相同为0

示例:1001^0111=1110


四、编码实现


classSolution {
public:
intmissingNumber(vector<int>&nums) {
inti,n=nums.size(),ans=0;//数字初始化for(i=0;i<n;i++)//for循环判断        {
ans=ans^i^nums[i];//逐位异或计算        }
returnans^n;//输出结果    }
};

五、测试结果4.png

相关文章
|
2月前
|
算法 Java 程序员
【算法每日一练及解题思路】有n级台阶,一次只能上1级或2级,共有多少种走法?
本文深入解析了“爬楼梯问题”,探讨了递归与迭代两种解法,并提供了Java代码实现。通过分析问题本质,帮助读者理解动态规划技巧,提高解决实际编程问题的能力。关键词:Java, 算法, 动态规划, 爬楼梯问题, 递归, 迭代。
115 0
算法练习第九天——只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
|
机器学习/深度学习 存储 算法
算法打卡Day23_leetcode _136. 只出现一次的数字
算法打卡Day23_leetcode _136. 只出现一次的数字
算法打卡Day23_leetcode _136. 只出现一次的数字
|
JavaScript 算法 前端开发
【前端算法】JS实现数字千分位格式化
JS实现数字千分位格式化的几种思路,以及它们之间的性能比较
356 1
|
机器学习/深度学习 算法 数据建模
K近邻算法识别数字---OpenCV-Python开发指南(40)
K近邻算法识别数字---OpenCV-Python开发指南(40)
176 0
K近邻算法识别数字---OpenCV-Python开发指南(40)
|
存储 算法 Java
算法打卡Day5_lecode_448. 找到所有数组中消失的数字
算法打卡Day5_lecode_448. 找到所有数组中消失的数字
算法打卡Day5_lecode_448. 找到所有数组中消失的数字
|
算法 Java
Map与Set高频面试算法题(只出现一次的数字,复制带随机指针的链表,宝石与石头,旧键盘,前k个高频单词)(Java实现)
给一个非空整数数组,只有一个元素出现了一次,剩余的元素都出现了两次,,请找出那个只出现一次的数字
Map与Set高频面试算法题(只出现一次的数字,复制带随机指针的链表,宝石与石头,旧键盘,前k个高频单词)(Java实现)
|
存储 前端开发 算法
LeetCode只出现一次的数字使用JavaScript解题|前端学算法
LeetCode只出现一次的数字使用JavaScript解题|前端学算法
145 0
|
算法 PHP
力扣(LeetCode)算法题解:1365. 有多少小于当前数字的数字
力扣(LeetCode)算法题解:1365. 有多少小于当前数字的数字
141 0