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