Giả sử chúng ta có hai mảng được gọi là nums và value, cả hai đều chứa các số nguyên và giá trị của nums đang tăng dần và độ dài của chúng cũng bằng nhau. Chúng ta phải tìm giá trị của v cho một cặp chỉ số i, j, sao cho:i ≤ j tối đa hóa v =giá trị [i] + giá trị [j] + nums [j] - nums [i].
Vì vậy, nếu đầu vào giống như nums =[1, 2, 7] giá trị =[-4, 6, 5], thì đầu ra sẽ là 16, nếu chúng ta chọn i =1 và j =2, chúng ta nhận được 6 + 5 + 7 - 2 =16.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
ans1:=-inf, ans2:=-inf
-
đối với tôi trong phạm vi từ 0 đến kích thước của nums - 1, thực hiện
-
ans1:=tối đa ans1 và (giá trị [i] - nums [i])
-
ans2:=tối đa ans2 và (giá trị [i] + nums [i])
-
-
trả về ans1 + ans2
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn
from math import inf def solve(nums, values): ans1 = -inf ans2 = -inf for i in range(len(nums)): ans1 = max(ans1, (values[i] - nums[i])) ans2 = max(ans2, (values[i] + nums[i])) return ans1 + ans2 nums = [1, 2, 7] values = [-4, 6, 5] print(solve(nums, values))
Đầu vào
[1, 2, 7], [-4, 6, 5]
Đầu ra
16