LeetCode268.缺失的数
发布日期:2021-05-14 23:50:50 浏览次数:17 分类:精选文章

本文共 593 字,大约阅读时间需要 1 分钟。

数学求和公式、排序+二分以及位运算XOR,这三种方法可以用来找出数组中缺失的数字。每种方法都有其独特的优势和适用场景。

方法一:数学高斯求和公式

这种方法的思路是通过计算数组的总和与1~n的和之差来确定缺失的数。由于是从0开始计数,因此数组的长度实际上是最大值加1。去除一个数后,剩下的数可以与1~n的和对比,最终得出缺失的数字。当数组长度较小时,这种方法效率很高,且与数组大小成正比,总体复杂度是O(n),空间复杂度为O(1)。

方法二:排序+二分查找

这一方法通过将数组排序,然后利用二分查找来确定缺失的位置。具体操作是先将数组按升序排序,然后在状态中进行二分查找。当找到一个节点的值与其索引不符时,可以确定缺失的位置。尽管这方法在最坏情况下可能需要较多次的比较,但在大多数情况下都是高效的。排序后的时间复杂度是O(n log n),而二分查找仅需O(log n)时间,因此整体复杂度为O(n log n),空间复杂度为O(1)。

方法三:位运算XOR

这种方法利用了异或操作的特性,即两个相同的数异或结果为0。由于数组中每个元素(除缺失的那个外)都与其索引对应,因此我们可以假设一个初始值,这个值等于数组的长度(即最大索引加1)。然后,遍历数组,对每个元素与其索引进行异或操作,最终结果即为缺失的数字。这种方法支持的时间复杂度为O(n),空间复杂度为O(1),非常适合大数组处理。

上一篇:LeetCode342.4的幂
下一篇:LeetCode201数字范围按位与

发表评论

最新留言

很好
[***.229.124.182]2025年04月10日 08时00分30秒