解题思路:
- 计算完整序列的期望和 expected_sum,可以使用等差数列求和公式,expected_sum = (n * (n + 1)) // 2,其中 n 是序列的长度。
- 遍历给定的数组,将数组中的每个元素累加到变量 actual_sum 中,得到实际的元素和。
- 缺失的数字可以通过计算 expected_sum - actual_sum 得到。
- 返回缺失的数字。
代码实现及注释:
def find_missing_number(nums):
n = len(nums) + 1 # 序列的长度
expected_sum = (n * (n + 1)) // 2 # 期望和
actual_sum = sum(nums) # 实际元素和
missing_number = expected_sum - actual_sum # 缺失的数字
return missing_number
# 测试
nums = [1, 2, 4, 5, 6]
result = find_missing_number(nums)
print(result) # 输出: 3,因为数字 3 缺失在序列中
nums = [1, 2, 3, 4, 5]
result = find_missing_number(nums)
print(result) # 输出: 6,因为数字 6 缺失在序列中
该算法的时间复杂度为 O(n),其中 n 是序列的长度。在算法的执行过程中,需要遍历一次数组来计算实际的元素和,以及进行一些基本的数学运算。因此,总的时间复杂度是线性的。