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

โปรแกรมหาคู่ระยะทางที่ใหญ่ที่สุดจากสองรายการตัวเลขใน Python


สมมติว่าเรามีรายการตัวเลขสองรายการที่เรียกว่า A และ B และมีความยาวเท่ากัน เราต้องหาค่าสูงสุดของ 0 ≤ i

ดังนั้น หากอินพุตเป็น A =[2, 4, 10, 6] B =[3, 4, 7, 5] ผลลัพธ์จะเป็น 14 เช่นเดียวกับเมื่อ i =0 และ j =2 และเราได้รับ | 2 - 10| + |3 - 7| + |1 - 3|.

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

  • ตอบ :=0
  • n :=ขนาดของ a
  • สำหรับแต่ละคู่ (s, t) ใน [(-1, -1) ,(-1, 1) ,(1, -1) ,(1, 1) ] ทำ
    • cur_min :=อินฟินิตี้
    • cur_max :=-อินฟินิตี้
    • สำหรับฉันในช่วง 0 ถึง n ให้ทำ
      • tmp :=s * a[i] + t * b[i] + i
      • cur_min :=ขั้นต่ำของ cur_min, tmp
      • cur_max :=สูงสุดของ cur_max, tmp
    • ans :=สูงสุดของ ans, (cur_max - cur_min)
  • คืนสินค้า

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

ตัวอย่าง

class Solution:
   def solve(self, a, b):
      ans = 0
      n = len(a)
      for s, t in [(-1, -1), (-1, 1), (1, -1), (1, 1)]:
         cur_min = float("inf")
         cur_max = float("-inf")
         for i in range(n):
            tmp = s * a[i] + t * b[i] + i
            cur_min = min(cur_min, tmp)
            cur_max = max(cur_max, tmp)
            ans = max(ans, cur_max - cur_min)
      return ans
ob = Solution()
A = [2, 4, 10, 6]
B = [3, 4, 7, 5]
print(ob.solve(A, B))

อินพุต

[2, 4, 10, 6],[3, 4, 7, 5]

ผลลัพธ์

14