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

Subarray สูงสุดใน Python


สมมติว่าเรามีอาร์เรย์จำนวนเต็ม A เราต้องหาอาร์เรย์ย่อยที่อยู่ติดกันซึ่งมีความยาวอย่างน้อยหนึ่งรายการ และมีค่ารวมมากที่สุด และส่งคืนผลรวมด้วย ดังนั้นหากอาร์เรย์ A เหมือนกับ A =[-2,1,-3,4,-1,2,1,-5,4] ผลรวมจะเป็น 6 และอาร์เรย์ย่อยจะเป็น [4, -1 , 2, 1]

เพื่อแก้ปัญหานี้ เราจะพยายามใช้วิธีการเขียนโปรแกรมแบบไดนามิก

  • กำหนดอาร์เรย์ dp เท่ากับขนาด A และเติมด้วย 0
  • dp[0] :=A[0]
  • for i =1 ถึงขนาด A – 1
    • dp[i] :=สูงสุดของ dp[i – 1] + A[i] และ A[i]
  • ผลตอบแทนสูงสุดใน dp

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง (Python)

class Solution(object):
   def maxSubArray(self, nums):
      """
      :type nums: List[int]
      :rtype: int
      """
      dp = [0 for i in range(len(nums))]
      dp[0] = nums[0]
      for i in range(1,len(nums)):
         dp[i] = max(dp[i-1]+nums[i],nums[i])
      #print(dp)
      return max(dp)
nums = [-2,1,-3,7,-2,2,1,-5,4]
ob1 = Solution()
print(ob1.maxSubArray(nums))

อินพุต

nums = [-2,1,-3,7,-2,2,1,-5,4]

ผลลัพธ์

8