返回
LeetCode 268. 丢失的数字 - 进击算法之路
闲谈
2023-12-22 16:09:57
**引言**
在计算机编程中,数组是一种常用的数据结构,它可以存储一系列具有相同类型的数据元素。在某些情况下,数组中可能会丢失一个或多个元素,从而导致数组出现间隙。找到丢失的数字是解决这类问题的一个关键步骤。
**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. 丢失的数字是一道经典的算法问题,它要求我们在给定的数组中找出丢失的数字。我们介绍了使用高斯求和公式解决这道题目的方法,并提供了详细的代码示例。希望这篇文章能帮助您理解和掌握这道题目。