每日一题:寻找缺失的数字

解题思路:

  1. 计算完整序列的期望和 expected_sum,可以使用等差数列求和公式,expected_sum = (n * (n + 1)) // 2,其中 n 是序列的长度。
  2. 遍历给定的数组,将数组中的每个元素累加到变量 actual_sum 中,得到实际的元素和。
  3. 缺失的数字可以通过计算 expected_sum - actual_sum 得到。
  4. 返回缺失的数字。
    代码实现及注释:
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 是序列的长度。在算法的执行过程中,需要遍历一次数组来计算实际的元素和,以及进行一些基本的数学运算。因此,总的时间复杂度是线性的。

猜你喜欢

转载自blog.csdn.net/qq_29669259/article/details/131592515
今日推荐