美文网首页leetCode
【位运算】丢失的数字

【位运算】丢失的数字

作者: 修行者12138 | 来源:发表于2020-10-22 22:42 被阅读0次

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

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

提示:

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/missing-number

AC代码

public int missingNumber(int[] nums) {
    if (null == nums || nums.length == 0) {
        return 0;
    }

    // 利用异或“相同为0,不同为1”的特点,把0到n这n+1个数,与nums数组中n个数都异或一遍,相同的数字互相抵消,最后结果就是丢失的数字
    int sum = nums.length;
    for (int i = 0; i < nums.length; i++) {
        sum = sum ^ i ^ nums[i];
    }
    return sum;
}

相关文章

  • Python 常用运算

    布尔运算 数字类型 整数类型的按位运算

  • 【转+补充】深入研究js中的位运算及用法

    转载自【博客园-不疯魔不成活】 《深入研究js中的位运算及用法》 什么是位运算? 位运算是在数字底层(即表示数字的...

  • 强大的位运算符

    位取反运算符 位取反运算符(~)是对所有位的数字进行取反操作位取反运算符.png 位与运算符 位与运算符(&)可以...

  • swift-位运算符

    1. 位取反运算符( ~ ) 位取反运算符(~ )是对所有位的数字进行取反操作 2. 位与运算符( &) 位与运算...

  • javaSE学习-位运算符

    & 位与 | 位或 位运算符会将数字转化为二进制再进行计算。 分析: 上面这些运算符会将数字转换成2进制再进行运算...

  • 位运算符

    位取反运算符 位取反运算符(~)是对所有位的数字进行取反操作 位与运算符 位与运算符(&)可以对两个数的比特位进行...

  • python运算符

    Python算数运算符 Python比较运算符 Python赋值运算符 Python位运算符 按位运算符是把数字看...

  • 位运算符

    位取反运算符 取反翻运算符 ~ 是对所有位的数字进行取反操作0 变 11 变 0 位与运算符 位与运算符 & 可以...

  • Javascript中的位运算符

    本文章主要讲解JS中位运算符的基本说明和常见用法 位运算符用于32位的数字上, 任何的数字操作都将转为32位, 运...

  • JS位运算异常(位运算精度丢失)的原因探究

    参考资料 《【转+补充】深入研究js中的位运算及用法》《【JS时间戳】获取时间戳的最快方式探究》 由来 日常开发中...

网友评论

    本文标题:【位运算】丢失的数字

    本文链接:https://www.haomeiwen.com/subject/xevbmktx.html