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

โปรแกรมหาผลรวมสูงสุดจากการลบ K ตัวจากปลายทั้งสองใน Python

สมมติว่ามีรายการตัวเลข nums และค่า k ต้องการหาผลรวมสูงสุดของสมาชิกที่ลบได้ โดยต้องลบพอดี k ครั้ง แต่ละครั้งลบจากซ้ายหรือขวาได้

ตัวอย่าง: nums = [2, 4, 5, 3, 1], k = 2 ผลลัพธ์คือ 6 ลบ 2 และ 4

ขั้นตอนการแก้ปัญหา

  1. window = sum(nums[:k]) (ลบ k ตัวแรก)
  2. ans = window
  3. วน i จาก 1 ถึง k:
    • window -= nums[k-i] (นำตัวซ้ายออก)
    • window += nums[-i] (เพิ่มตัวขวาเข้า)
    • ans = max(ans, window)
  4. คืนค่า 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