【位运算】Leetcode 丢失的数字

题目解析

268. 丢失的数字

本题的意思就是数组的长度为n,在[0,n]区间中寻找缺失的一个数字


算法讲解

直观思路:排序 + Hash,顺序查找缺失的数字

优化:使用异或,首先将[0,n]之间所有数字异或在一起,然后将顺序异或nums数组中的每一个元素,最后异或完成之后就是那个缺失的数字

cpp 复制代码
class Solution {
public:
    int missingNumber(vector<int>& nums) {
        int n = nums.size();
        int ret = 0;
        for(int i = 0; i <= n; i++)
        {
            ret ^= i;
        }
        //寻找缺失的数字
        for(int i = 0; i < n; i++)
        {
            ret ^= nums[i];
        }
        return ret;
    }
};

按照上面的代码,比如当前在[0,4]区间中寻找确实的数字,首先将ret = 0 ^ 1 ^ 2 ^ 3 ^ 4 ; 之后,再让ret = ret ^ 0 ^ 1 ^ 3 ^ 4; 得到ret = 2;


相关推荐
黎阳之光3 分钟前
黎阳之光:全域实景立体管控,重构智慧电厂与变电站数字孪生新范式
大数据·人工智能·算法·安全·数字孪生
嘻嘻哈哈樱桃6 分钟前
数据流中的中位数 力扣--160
算法·leetcode·职场和发展
老约家的可汗7 分钟前
深入浅出:Map与Set的核心原理与使用场景
数据结构·算法
j_xxx404_14 分钟前
力扣算法题:字符串(最长公共前缀|最长回文子串)
c++·算法·leetcode
承渊政道16 分钟前
【递归、搜索与回溯算法】(穷举vs暴搜vs深搜vs回溯vs剪枝:一文讲清概念与用法)
数据结构·c++·算法·决策树·深度优先·剪枝·宽度优先
承渊政道17 分钟前
【递归、搜索与回溯算法】(综合练习:一网打尽常见题型分类总结与方法归纳)
c++·算法·决策树·分类·深度优先·哈希算法·宽度优先
小江的记录本23 分钟前
【网络安全】《网络安全与数据安全核心知识体系》(包括数据脱敏、数据加密、隐私合规、等保2.0)
java·网络·后端·python·算法·安全·web安全
SimpleLearingAI23 分钟前
ROPE:大模型必学操作
人工智能·算法
zore_c29 分钟前
【C++】C++类和对象实现日期类项目——时间计算器!!!
java·c语言·数据库·c++·笔记·算法·排序算法
人道领域32 分钟前
【LeetCode刷题日记】:344,541-字符串反转字符串反转技巧:双指针原地交换法
算法·leetcode·面试