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