
LeetCode268.缺失数字
首先将 0 到 n 这些数进行异或运算。 然后对输入的数组进行异或运算。 最后将两个结果进行异或运算,结果便是漏掉的数字,因为其他数字在两个数组中都是成对出现的,异或运算会得到 0。
发布日期:2025-04-05 03:27:53
浏览次数:7
分类:精选文章
本文共 975 字,大约阅读时间需要 3 分钟。
268. 缺失数字
描述
给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0..n 中没有出现在序列中的那个数。
示例
示例 1:
输入: [3, 0, 1]
输出: 2示例 2:
输入: [9, 6, 4, 2, 3, 5, 7, 0, 1]
输出: 8思路一:求和
一种可行的方法是对从 0 到 n 求和,然后对 nums 求和,两者之差就是缺失的数字,但是这种方式需要注意缺失的数是 0 的情况,即两者之和相等时可以认定为缺失的数是 0。
代码实现
class Solution: def missingNumber(self, nums): """nums是一个整数列表""" sum_ns = 0 for i in range(len(nums) + 1): sum_ns += i sum_nums = 0 for num in nums: sum_nums += num if sum_ns == sum_nums: return 0 else: return sum_ns - sum_nums
思路二:异或运算
异或运算的一个重要性质是,相同的数异或得 0,不同的数异或不为 0,可以推广到多个数异或的情形。本题的解法如下:
代码实现
class Solution: def missingNumber(self, nums): """nums是一个整数列表""" ret = 0 for i in range(len(nums) + 1): ret ^= i for num in nums: ret ^= num return ret
以上两个思路都能解决问题,但异或运算的方法更高效,且空间复杂度更低。
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月28日 18时39分04秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Leedcode7-binary-tree-postorder-traversal
2025-04-04
Leetcode - Permutations I,II
2025-04-04
LeetCode 64. 最小路径和(Minimum Path Sum) 20
2025-04-04
LeetCode AutoX 安途智行专场竞赛题解
2025-04-05
LeetCode OJ:Merge k Sorted Lists(归并k个链表)
2025-04-05
leetcode Plus One
2025-04-05
LeetCode shell 题解(全)
2025-04-05
LeetCode Text Justification
2025-04-05
leetcode Valid Parentheses
2025-04-05
Leetcode | Simplify Path
2025-04-05
LeetCode – Refresh – 4sum
2025-04-05
LeetCode – Refresh – Valid Number
2025-04-05
leetcode — edit-distance
2025-04-05
LeetCode 中级 - 有序链表转换二叉搜索树(109)
2025-04-05
leetCode 字符串反转
2025-04-05
LeetCode 无重复字符的最长子串 获取字符串中不重复的子串最大长度
2025-04-05
LeetCode 热题 HOT 100 (java算法)实时更新 未完
2025-04-05
leetCode 给定数组,目标值 计算数组下标
2025-04-05
leetcode 验证回文字符串 java实现
2025-04-05