การหาค่าน้อยที่สุดที่แทรกหน้ารายการเพื่อ Prefix Sums เป็นบวก
กำหนดรายการ nums หาค่า x > 0 น้อยที่สุด ที่นำ x ไปวางหน้า nums แล้ว prefix sums ของรายการใหม่เป็นบวกทั้งหมด
อัลกอริทึม
- แทรก 0 เข้าไปหน้า nums (เพื่อคำนวณ prefix sums ได้ง่าย)
- คำนวณ prefix sums แบบสะสม
- หาค่าต่ำสุดของ prefix sums (min_val)
- คำตอบ = 1 - min_val (ทำให้ prefix sums น้อยที่สุดกลายเป็น 1)
ตัวอย่างโค้ด
def solve(nums):
nums.insert(0, 0)
for i in range(1, len(nums)):
nums[i] += nums[i - 1]
return 1 - min(nums)
nums = [3, -6, 4, 3]
print(solve(nums))
ผลลัพธ์
4
คำอธิบาย
nums = [3, -6, 4, 3] → prefix sums = [3, -3, 1, 4] ค่าต่ำสุด = -3
แทรก 4 → [4, 3, -6, 4, 3] → prefix sums = [4, 7, 1, 5, 8] ทุกค่าบวก