สมมติว่ามีรายการตัวเลข nums และค่า k ต้องการหาผลรวมสูงสุดของสมาชิกที่ลบได้ โดยต้องลบพอดี k ครั้ง แต่ละครั้งลบจากซ้ายหรือขวาได้
ตัวอย่าง: nums = [2, 4, 5, 3, 1], k = 2 ผลลัพธ์คือ 6 ลบ 2 และ 4
ขั้นตอนการแก้ปัญหา
window = sum(nums[:k])(ลบ k ตัวแรก)ans = window- วน
iจาก 1 ถึงk:window -= nums[k-i](นำตัวซ้ายออก)window += nums[-i](เพิ่มตัวขวาเข้า)ans = max(ans, window)
- คืนค่า
ans
ตัวอย่างโค้ด
class Solution:
def solve(self, nums, k):
window = sum(nums[:k])
ans = window
for i in range(1, k + 1):
window -= nums[k - i]
window += nums[-i]
ans = max(ans, window)
return ans
ob = Solution()
nums = [2, 4, 5, 3, 1]
k = 2
print(ob.solve(nums, k))
อินพุต
[2, 4, 5, 3, 1], 2
เอาต์พุต
6