在Python中查找距离不连续的最小对和程序
假设我们有一个名为nums的数字列表。现在让我们考虑任何一对下标(i,j),其中i1。然后找到最小的对和。
所以,如果输入是nums = [3,4,2,2,4],那么输出将是5,我们可以选择3和2这两个值,因此总和为5。我们无法选择2和2,因为它们是相邻的,违反了j-i>1的约束条件。
为了解决这个问题,我们将按照以下步骤进行操作 −
- n:nums的大小
- min_seen:nums[0]
- ans:无限大
- for i in range 2 to n – 1,do
- ans = min(ans,min_seen + nums[i])
- min_seen = min(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