[Algorithm] Leet_2090_KRadiusSubarrayAverages
Leet_2090_KRadiusSubarrayAverages 접근방식
[Algorithm] Leet_2090_KRadiusSubarrayAverages
Leet_2090_KRadiusSubarrayAverages
문제 링크
https://leetcode.com/problems/k-radius-subarray-averages/
카테고리
슬라이딩 윈도우
접근 방식
고정된 슬라이딩 윈도우 문제에서 변형이 있는 문제이다.
슬라이딩 윈도우 문제에서 i,j 두 개의 포인터를 드는 방식으로 문제를 푸는데 그 중 중간의 인덱스의 처리에 관련된 문제여서 기존 방식과 함꼐 ans 배열에 i + j / 2로 인덱스 처리를 하는 방식으로 문제를 해결햇다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package ver2.Leet_2090_KRadiusSubarrayAverages;
import java.util.Arrays;
class Solution {
public int[] getAverages(int[] nums, int k) {
int n = nums.length;
int[] ans = new int[n];
int i = 0;
int j = 0;
long size = 2 * k + 1;
long sum = 0;
Arrays.fill(ans,-1);
if(k == 0) return nums;
while(j < n){
if(j - i + 1 < size){
sum += nums[j];
j++;
}
else{
sum += nums[j];
ans[(i + j) / 2] = (int)(sum / size);
sum -= nums[i];
i++;
j++;
}
}
return ans;
}
}
This post is licensed under CC BY 4.0 by the author.