Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm cặp khoảng cách lớn nhất từ ​​hai danh sách số trong Python

Giả sử chúng ta có hai danh sách các số được gọi là A và B, và độ dài của chúng bằng nhau. Chúng ta phải tìm giá trị lớn nhất cho mọi 0 ≤ i

Vì vậy, nếu đầu vào là A =[2, 4, 10, 6] B =[3, 4, 7, 5], thì đầu ra sẽ là 14, như khi i =0 và j =2 và chúng ta nhận được | 2 - 10 | + | 3 - 7 | + | 1 - 3 |.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • ans:=0
  • n:=kích thước của một
  • cho mỗi cặp (s, t) trong [(-1, -1), (- 1, 1), (1, -1), (1, 1)], thực hiện
    • cur_min:=infinity
    • cur_max:=-infinity
    • đối với tôi trong phạm vi từ 0 đến n, thực hiện
      • tmp:=s * a [i] + t * b [i] + i
      • cur_min:=tối thiểu cur_min, tmp
      • cur_max:=tối đa của cur_max, tmp
    • ans:=tối đa ans, (cur_max - cur_min)
  • trả lại ans

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

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))

Đầu vào

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

Đầu ra

14