num과 values라는 두 개의 배열이 있고 둘 다 정수를 포함하고 num의 값은 엄격하게 증가하고 길이도 동일하다고 가정합니다. 다음과 같은 인덱스 i, j 쌍에 대한 v 값을 찾아야 합니다. v =values[i] + values[j] + nums[j] - nums[i]를 최대화하는 i ≤ j입니다.
따라서 입력이 nums =[1, 2, 7] values =[-4, 6, 5]와 같으면 출력은 16이 되고 i =1과 j =2를 선택하면 6 + 5가 됩니다. + 7 - 2 =16.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
ans1 :=-inf, ans2 :=-inf
-
범위 0에서 숫자 - 1까지의 i에 대해 수행
-
ans1 :=최대 ans1 및 (values[i] - nums[i])
-
ans2 :=최대 ans2 및 (values[i] + nums[i])
-
-
ans1 + ans2를 반환
예시
더 나은 이해를 위해 다음 구현을 살펴보겠습니다.
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)) 입력
[1, 2, 7], [-4, 6, 5]
출력
16