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