• 【算法 | 位运算No.1】leetcode268. 丢失的数字


    个人主页兜里有颗棉花糖
    欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创
    收录于专栏【手撕算法系列专栏】【Leetcode
    🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望对大家有所帮助
    🍓希望我们一起努力、成长,共同进步。

    点击直接跳转到该题目

    1️⃣题目描述

    给定一个包含 [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 = [0,1]
    输出:2
    解释:n = 2,因为有 2 个数字,所以所有的数字都在范围 [0,2] 内。2 是丢失的数字,因为它没有出现在 nums 中。

    示例4:

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

    注意:

    • n == nums.length
    • 1 <= n <= 104
    • 0 <= nums[i] <= n
    • nums 中的所有数字都 独一无二

    2️⃣题目解析

    总共有三种解法(哈希、位运算、高斯求和)。

    这里只对位运算高斯求和进行解释。

    位运算求解原理:

    • 相同数组进行异或结果为0
    • 0 ^ num = num

    高斯求和原理:

    • 把[0,n]的和记为sum1
    • 把数组nums中所有的元素之和记为sum2
    • 丢失的数字即为sum1 - sum2

    3️⃣解题代码

    解法1(高斯求和):

    class Solution {
    public:
        int missingNumber(vector<int>& nums) {
            int n = nums.size(),sum1 = 0,sum2 = 0;
    
            for(int i = 0;i < n;i++) sum1 += nums[i];
            for(int i = 0;i <= n;i++) sum2 += i;
    
            return sum2 - sum1;   
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    解法2(位运算):

    class Solution {
    public:
        int missingNumber(vector<int>& nums) {
            int n = nums.size(),ret = 0;
            for(auto x : nums) ret ^= x;
            for(int i = 0;i <= n;i++) ret ^= i;
            return ret;
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

  • 相关阅读:
    高级数据结构——树状数组
    【Node实现数据加密】
    前缀和、差分
    C语言——二周目——输入输出辨析
    Day117.尚医通:生成挂号订单模块
    神经网络基本框架(torch.nn)
    3.前端、后端环境的搭建
    重要活动 | 林乐博士受邀出席“绿色金融创新策略与应用”论坛
    SQL注入简单总结
    [附源码]java毕业设计旅游管理系统
  • 原文地址:https://blog.csdn.net/m0_74352571/article/details/133915815