728x90
1. 문제
2. 요구사항
1) 정수 배열 nums와 정수 k가 주어진다.
2) nums의 길이가 k인 연속 부분의 배열의 평균값 중 최대값을 찾아 반환한다.
3. 코드
class Solution {
double findMaxAverage(List<int> nums, int k) {
// 첫 k개의 요소를 더함
int sum = 0;
for (int i = 0; i < k; i++) {
sum += nums[i];
}
// 현재까지의 최대 합을 초기 합으로 설정
int maxSum = sum;
// 슬라이딩 윈도우 기법으로 윈도우를 한 칸씩 옮기면서 최대 합 계산
for (int i = k; i < nums.length; i++) {
// 윈도우를 오른쪽으로 한 칸 이동:
// 가장 왼쪽 요소를 빼고, 새로운 오른쪽 요소를 더함
sum = sum - nums[i - k] + nums[i];
// 현재 합이 최대 합보다 크면 갱신
if (maxSum < sum) {
maxSum = sum;
}
}
// 최대 합을 k로 나눠 평균을 구하고 double로 반환
return maxSum / k;
}
}
728x90
'Programming > LeetCode' 카테고리의 다른 글
| [Dart] 724. Find Pivot Index (0) | 2025.04.21 |
|---|---|
| [Dart] 700. Search in a Binary Search Tree (0) | 2025.04.18 |
| [Dart] 605. Can Place Flowers (0) | 2025.04.16 |
| [Dart] 392. Is Subsequence (0) | 2025.04.15 |
| [Dart] 383. Ransom Note (0) | 2025.04.14 |