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

โปรแกรมค้นหาคู่ (i, j) โดยที่ nums[i] + nums[j] + (i -j) ถูกขยายให้ใหญ่สุดใน Python?


สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums เราต้องหาคู่ (i, j) โดยที่ i

ดังนั้น หากอินพุตเท่ากับ nums =[6, 6, 2, 2, 2, 8] ผลลัพธ์จะเป็น 11 ราวกับว่าเราเลือกสองตัว 6 แล้วคะแนนของมันคือ 6 + 6 + 0 - 1 =11

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

  • ใหญ่ :=nums[0]

  • แม็กซี่ :=0

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

    • ใหญ่ :=ใหญ่ - 1

    • maxi :=สูงสุดของขนาดใหญ่ + nums[i] และ maxi

    • ใหญ่ :=สูงสุดของขนาดใหญ่และ nums[i]

  • คืนแม็กซี่

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

ตัวอย่าง

class Solution:
   def solve(self, nums):
      large = nums[0]

      maxi = 0
      for i in range(1, len(nums)):
         large -= 1
         maxi = max(large + nums[i], maxi)
         large = max(large, nums[i])

      return maxi

ob = Solution()
nums = [6, 6, 2, 2, 2, 8]
print(ob.solve(nums))

อินพุต

[6, 6, 2, 2, 2, 8]

ผลลัพธ์

11