Leetcode Java Maximum Value of an Ordered Triplet I
업데이트:
문제
코드
class Solution {
public long maximumTripletValue(int[] nums) {
long result = 0;
int diff = 0;
int max = 0;
for (int num : nums) {
result = Math.max(result, 1L * diff * num);
diff = Math.max(diff, max - num);
max = Math.max(max, num);
}
return result;
}
}
결과
설명
- 양의 정수로 구성된 nums의 임의 i < j < k 를 만족하는 세 위치 i, j, k를 이용하여 $(nums[i] - nums[j]) \times nums[k]$의 값이 최대인 값을 구하는 문제이다.
- 단, 결과가 음의 정수이면 0을 주어진 문제의 결과로 반환한다.
- 문제 풀이에 필요한 변수를 정의한다.
- result는 최댓값을 저장하기 위한 변수로, long 타입의 0으로 초기화한다.
- diff는 $nums[i] - nums[j]$의 값이 최대인 값을 구하기 위한 변수로, 0으로 초기화한다.
- max는 마지막 곱하기 위한 nums[k]의 값을 구하기 위한 변수로, 0으로 초기화한다.
- nums의 값들을 순차적으로 num에 넣고 아래를 수행한다.
- result에 result와 $diff \times num$을 long 타입으로 변환한 값 중 큰 값을 넣어준다.
- diff에 diff와 $max - num$ 중 차잇값이 큰 값을 넣어준다.
- max에는 max와 num 중 큰 값을 넣어 곱할 값을 넣어준다.
- 반복이 완료되어 조건을 만족하는 최댓값이 저장된 result를 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기