728x90
초기 접근 방법
❗️처음에 생각한 방향
처음부터 해당 알고리즘을 공부할 목적으로 Sliding Window가 뭔지 검색하고 풀음
최종 접근
✅ 고정된 크기 k만큼의 avg를 먼저 구하고 해당 avg와 sliding 해서 구할 새로운 avg와 비교
✅ Sliding 한다는 것 :
window에 포함될 새로운 배열만큼 더하고,
window에서 빠질 가장 작은 배열만큼 뺀다.
for문 안에서 주어진 변수로 어떻게 한 번에 다 표시할 수 있을까 고민했고,
주어진 k와 i를 이용해 모두 표현 가능 >> [i]번째는 더하고, [i-k] 번째는 빼지는 구조
구현
Runtime : 129ms
Beats 89.49% of users with C
double findMaxAverage(int* nums, int numsSize, int k){
double sum =0, avg;
int i;
for(int i=0; i<k; i++){
sum += nums[i];
}
avg = sum/k;
for(int i = k; i<numsSize; i++){
sum -= nums[i-k];
sum += nums[i];
if(sum/k > avg) avg = sum/k;
}
return avg;
}
Take aways
✅ Sliding Windows 알고리즘
고정된 크기의 배열을 그대로 움직이는 개념으로 Two pointers과 유사하지만
그 크기가 고정되어 있다는 점에서 two pointers와 다름
'Algorithm > LeetCode' 카테고리의 다른 글
LeetCode 1679. Max Number of K-Sum Pairs (0) | 2023.08.15 |
---|---|
LeetCode 1456. Maximum Number of Vowels in a Substring of Given Length (0) | 2023.08.13 |
LeetCode 11. Container With Most Water (0) | 2023.08.13 |
LeetCode 334. Increasing Triplet Subsequence (0) | 2023.08.13 |
LeetCode 724. Find Pivot Index (0) | 2023.08.11 |