首页 > 其他分享 >LeetCode 268.丢失的数字(简单)

LeetCode 268.丢失的数字(简单)

时间:2022-11-25 13:32:28浏览次数:45  
标签:数字 nums res 示例 异或 丢失 数组 268 LeetCode

题目描述:

给定一个包含 ​​[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 <=
  • ​0 <= nums[i] <= n​
  • ​nums​​ 中的所有数字都 独一无二

题目分析:

这道题其实是 ​​LeetCode 136.只出现一次的数字(简单)​​​ 的变形题,基本思路一致,都是使用异或运算的特点 ​​x ^ x = 0​​​ 和 ​​x ^ 0 = x​​​ 解题。例如给出一个数组 ​​[0, 1, 3]​​​ ,数组长度为 ​​3​​​ ,缺了 ​​2​​​ 这个数,那么我们就把数组的所有索引值以及数组中的每个值进行异或操作,最后再与数组长度进行异或,就能得到答案。这个例子异或表达式为 ​​(0 ^ 1 ^ 2) ^ (0 ^ 1 ^ 3) ^ 3 = 2​​ 。

题解:

执行用时: 0 ms

内存消耗: 38.8 MB

class Solution {
public int missingNumber(int[] nums) {
// 结果 初始化为数组长度值
int res = nums.length;
// 将数组中的每个数和对应索引进行异或,得到结果与 res 异或
for (int i = 0; i < nums.length; ++i) {
res ^= i ^ nums[i];
}
// 返回结果
return res;
}
}

题目来源:力扣(LeetCode)



标签:数字,nums,res,示例,异或,丢失,数组,268,LeetCode
From: https://blog.51cto.com/u_15891283/5886577

相关文章

  • LeetCode 338.比特位计数(简单)
    题目描述:给你一个整数​​n​​​,对于​​0<=i<=n​​​中的每个​​i​​​,计算其二进制表示中​​1​​​的个数,返回一个长度为​​n+1​​​的数组​......
  • 面试官问:为什么kafka这么快,又能保证消息不丢失?
    小菜鸡最近在疯狂面试中,就是为了能拿到一份满意的offer,这不上周又去头条受虐了。面试过程中,由于小菜鸡的充分准备(letcode各种刷),各种算法题不在话下,顺利的通过的头条变态的算......
  • LeetCode 540.有序数组中的单一元素
    LeetCode540.有序数组中的单一元素题目链接:​​https://leetcode-cn.com/problems/single-element-in-a-sorted-array/​​题目描述:给定一个只包含整数的有序数组,每个元......
  • LeetCode 154.寻找旋转排序数组中的最小值II
    LeetCode154.寻找旋转排序数组中的最小值II题目链接:​​https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array-ii/​​题目描述:已知一个长度为 n ......
  • LeetCode 81.搜索旋转排序数组II
    LeetCode81.搜索旋转排序数组II题目链接:​​https://leetcode-cn.com/problems/search-in-rotated-sorted-array-ii/​​题目描述:已知存在一个按非降序排列的整数数组 n......
  • LeetCode 34.在排序数组中查找元素的第一个和最后一个位置
    LeetCode34.在排序数组中查找元素的第一个和最后一个位置题目链接:​​https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array/​​......
  • LeetCode 76.最小覆盖子串
    LeetCode76.最小覆盖子串题目链接:​​https://leetcode-cn.com/problems/minimum-window-substring/​​题目描述:给你一个字符串 s 、一个字符串 t 。返回 s 中涵......
  • leetcode 104. 二叉树的最大深度 js实现
    给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null......
  • leetcode 344. 反转字符串 js实现
    编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用O(1)的额外空间解......
  • leetcode 21. 合并两个有序链表 js实现
    将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例1:输入:l1=[1,2,4],l2=[1,3,4]输出:[1,1,2,3,4,4]示......