返回

LeetCode 268. 丢失的数字 - 进击算法之路

闲谈





**引言** 

在计算机编程中,数组是一种常用的数据结构,它可以存储一系列具有相同类型的数据元素。在某些情况下,数组中可能会丢失一个或多个元素,从而导致数组出现间隙。找到丢失的数字是解决这类问题的一个关键步骤。

**LeetCode 268. 丢失的数字** 

LeetCode 268. 丢失的数字是一道经典的算法问题,它要求我们在给定的数组中找出丢失的数字。这道题目的难度为简单,非常适合初学者学习和练习。

**题目** 

给定一个包含 n 个整数的数组 nums,其中每个整数都在范围 [0, n] 内且恰好出现一次。只有一个整数在该数组中丢失,请找出这个丢失的整数。

**示例** 

输入:nums = [3,0,1]
输出:2


输入:nums = [0,1]
输出:2


输入:nums = [9,6,4,2,3,5,7,0,1]
输出:8


**思路** 

解决这道题目的一个简单方法是使用高斯求和公式。高斯求和公式可以计算出从 1 到 n 的所有整数之和。我们只需要将数组中的所有元素相加,然后从这个和中减去高斯求和公式计算出的值,就可以得到丢失的数字。

def missing_number(nums):
"""
找出丢失的数字。

参数:
    nums:一个包含 n 个整数的数组,其中每个整数都在范围 [0, n] 内且恰好出现一次。只有一个整数在该数组中丢失。

返回:
    丢失的整数。
"""

n = len(nums)
expected_sum = (n * (n + 1)) // 2
actual_sum = sum(nums)
return expected_sum - actual_sum

**时间复杂度** 

该算法的时间复杂度为 O(n),其中 n 是数组 nums 的长度。

**空间复杂度** 

该算法的空间复杂度为 O(1),因为我们只需要使用几个变量来存储临时数据。

**代码** 

```python
def missing_number(nums):
    """
    找出丢失的数字。

    参数:
        nums:一个包含 n 个整数的数组,其中每个整数都在范围 [0, n] 内且恰好出现一次。只有一个整数在该数组中丢失。

    返回:
        丢失的整数。
    """

    n = len(nums)
    expected_sum = (n * (n + 1)) // 2
    actual_sum = sum(nums)
    return expected_sum - actual_sum


if __name__ == "__main__":
    nums = [3, 0, 1]
    print(missing_number(nums))  # 2

    nums = [0, 1]
    print(missing_number(nums))  # 2

    nums = [9, 6, 4, 2, 3, 5, 7, 0, 1]
    print(missing_number(nums))  # 8

总结

LeetCode 268. 丢失的数字是一道经典的算法问题,它要求我们在给定的数组中找出丢失的数字。我们介绍了使用高斯求和公式解决这道题目的方法,并提供了详细的代码示例。希望这篇文章能帮助您理解和掌握这道题目。