在 Python 中从算术序列中查找已删除项的程序

假设我们有一个名为 nums 的数组,其中包含 n-1 个等差数列项。之前删除了除 nums 的第一个或最后一个元素之外的一个元素。我们必须找到被删除的号码。

因此,如果输入类似于 nums = [5, 7, 11, 13],则输出将为 9,因为项目遵循公式 2i+5,因此对于 i = 2,它将是 2*2 + 5 = 9 缺少。

示例

让我们看下面的实现来更好地理解

def solve(nums):

   if len(nums) == 2:

      return sum(nums) // 2

   if nums[0] == nums[1]:

      return nums[0]

   lower = nums[0]

   upper = nums[-1]

   interval = (upper - lower) // 长度(编号)

   pointer = len(nums) // 2

   left = 0

   right = len(nums) - 1

   while left != right:

      if nums[pointer] != nums[0] + interval * pointer:

         if nums[pointer - 1] == nums[0] + interval * (pointer -1):

            return nums[0] + interval * pointer

         else:

            right = pointer

            pointer = (left + right) // 2

      else:

         if right - left == 1:

            pointer = right

         else:

            left = pointer

            pointer = (left + right) // 2

nums = [5, 7, 11, 13]

print(solve(nums))

输入

[5, 7, 11, 13]
输出结果
9

以上是 在 Python 中从算术序列中查找已删除项的程序 的全部内容, 来源链接: utcz.com/z/338633.html

回到顶部