반응형
1. 문제
- 정수 배열 nums와 정수 k가 주어질 때, k 길이의 구간 평균값이 가장 큰 경우를 반환하라.
2. 해결
function findMaxAverage(nums: number[], k: number): number {
let max = Number.MIN_SAFE_INTEGER;
let left = 0, right = 0;
let sum = 0;
while(right < nums.length) {
sum += nums[right];
if(right - left === k - 1) {
max = Math.max(max , sum / k);
sum -= nums[left];
left++;
}
right++;
}
return max;
};
- 연속된 구간의 평균이 중요하므로, 두 포인터를 앞에서 부터 시작.
- sum을 갱신하며 right 증가.
- right - left 가 k-1과 같으면, 해당 크기 구간에 도달한 것이므로, max 갱신 및 left 증가.
- left 증가하면서 sum에서 left 값 제외.