Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมค้นหาผลรวมสูงสุดโดยลบหมายเลข K ออกจากส่วนท้ายใน python


สมมติว่าเรามีรายการตัวเลขที่เรียกว่า 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