문제 링크
https://leetcode.com/problems/maximum-average-subarray-i
해결 방법
subarray
라는 용어를 보고sliding window
알고리즘으로 접근해본다.- 길이
k
가 고정되어 있으므로, 초기에 윈도우 사이즈만큼 더하며 초기화를 해준다. - 초기화 후에
sliding window
를 우측으로 한칸씩 옮기며 모든window
를 점검하면 끝난다.
소스코드
/**
* @param {number[]} nums
* @param {number} k
* @return {number}
*/
var findMaxAverage = function (nums, k) {
// subarray -> sliding window
// init variables to solve sliding windows.
let l = 0;
let r = 0;
let c = 0;
// 1. sum till k - 1 first and save average to ans
for (; r < k; r++) {
c += nums[r];
}
let ans = c / k;
// while r < nums.length
while (r < nums.length) {
// 2. subtract nums[l], l++
c -= nums[l++];
// 3. add nums[r], r++
c += nums[r++];
// 4. update ans with max function
ans = Math.max(ans, c / k);
}
return ans;
};
반응형
'알고리즘 이론 > 배열과 문자열' 카테고리의 다른 글
Prefix Sum 기법 배워보기 (0) | 2023.01.02 |
---|---|
Sliding Window, max-consecutive-ones-iii 풀이 (0) | 2022.12.19 |
Sliding Window 기법 배워보기 (0) | 2022.12.18 |
Two Pointers, 정렬된 제곱의 배열 구하기 (squares of a sorted array) (0) | 2022.12.09 |
Two Pointers, O(n) 의 복잡도로 문자열 뒤집는 방법 (reverse string) (0) | 2022.12.09 |