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
广告