Python程序:查找距离不连续的最小对数和


假设我们有一个名为 的数字列表。现在让我们考虑任何一对索引 (i, j),其中 i < j 且 j - i > 1。然后找到最小的对数和。

因此,如果输入类似于 nums = [3, 4, 2, 2, 4],则输出将为 5,我们可以选择值 3 和 2,因此总和为 5。我们不能选择 2 和 2,因为它们是相邻的,并且违反了 j - i > 1 的约束。

为了解决这个问题,我们将遵循以下步骤:

  • n := nums 的大小
  • min_seen := nums[0]
  • ans := inf
  • 对于 i 从 2 到 n - 1 的范围,执行以下操作:
    • ans := ans 和 (min_seen + nums[i]) 的最小值
    • min_seen := min_seen 和 nums[i - 1] 的最小值
  • 返回 ans

示例

让我们看看以下实现以获得更好的理解:

def solve(nums):
   n = len(nums)
   min_seen = nums[0]

   ans = float("inf")

   for i in range(2, n):
      ans = min(ans, min_seen + nums[i])

      min_seen = min(min_seen, nums[i - 1])
   return ans

nums = [3, 4, 2, 2, 4]
print(solve(nums))

输入

[3, 4, 2, 2, 4]

输出

5

更新于: 2021年10月14日

220 次查看

开启你的 职业生涯

通过完成课程获得认证

开始
广告