Giả sử chúng ta có một danh sách các số được gọi. Bây giờ chúng ta hãy xem xét bất kỳ cặp chỉ số nào (i, j) trong đó i
Vì vậy, nếu đầu vào là nums =[3, 4, 2, 2, 4], thì đầu ra sẽ là 5, chúng ta có thể chọn giá trị 3 và 2 nên tổng tổng là 5. Chúng ta không thể chọn 2 và 2 vì chúng liền kề và vi phạm ràng buộc j - i> 1.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- n:=kích thước của nums
- min_seen:=nums [0]
- ans:=inf
- đối với tôi trong phạm vi từ 2 đến n - 1, thực hiện
- ans:=tối thiểu ans và (min_seen + nums [i])
- min_seen:=tối thiểu min_seen và nums [i - 1]
- trả lại ans
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
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)) Đầu vào
[3, 4, 2, 2, 4]
Đầu ra
5