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

โปรแกรมค้นหาผลรวมที่ใหญ่ที่สุดขององค์ประกอบที่ไม่อยู่ติดกันของรายการใน Python


สมมติว่าเรามีรายการของตัวเลขที่เรียกว่า nums เราจะกำหนดฟังก์ชันที่ส่งกลับผลรวมที่ใหญ่ที่สุดของตัวเลขที่ไม่อยู่ติดกัน ที่นี่ตัวเลขสามารถเป็น 0 หรือติดลบ

ดังนั้น หากอินพุตเป็นแบบ [3, 5, 7, 3, 6] ผลลัพธ์จะเป็น 16 เนื่องจากเราสามารถเอา 3, 7 และ 6 เพื่อให้ได้ 16

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้-

  • ถ้าขนาดของ nums <=2 แล้ว

    • คืนค่าสูงสุดของ nums

  • noTake :=0

  • เทค :=nums[0]

  • สำหรับฉันในช่วง 1 ถึงขนาดของ nums ทำ

    • เทค :=noTake + nums[i]

    • noTake :=สูงสุดของ noTake และรับ

  • ส่งคืนสูงสุดของ noTake และรับ

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

ตัวอย่าง

class Solution:
   def solve(self, nums):
      if len(nums) <= 2:
         return max(nums)
      noTake = 0
      take = nums[0]
      for i in range(1, len(nums)):
         take, noTake = noTake + nums[i], max(noTake, take)
         return max(noTake, take)
ob = Solution()
nums = [3, 5, 7, 3, 6]
print(ob.solve(nums))

อินพุต

[3, 5, 7, 3, 6]

ผลลัพธ์

16