สมมติว่าเรามีรายการหมายเลขที่เรียก ตอนนี้ให้เราพิจารณาคู่ของดัชนี (i, j) โดยที่ i
ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[3, 4, 2, 2, 4] ผลลัพธ์จะเป็น 5 เราสามารถเลือกค่า 3 และ 2 ได้ ดังนั้นผลรวมทั้งหมดคือ 5 เราไม่สามารถเลือก 2 และ 2 ได้เนื่องจากพวกมัน อยู่ติดกันและละเมิดข้อจำกัด j - i> 1
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- n :=ขนาดของ nums
- min_seen :=nums[0]
- ตอบ :=inf
- สำหรับฉันในช่วง 2 ถึง n - 1 ทำ
- ans :=ขั้นต่ำของ ans และ (min_seen + nums[i])
- min_seen :=ขั้นต่ำของ min_seen และ nums[i - 1]
- คืนสินค้า
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
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