코린이의 소소한 공부노트

[LeetCode/Easy] 643. Maximum Average Subarray I 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 643. Maximum Average Subarray I

무지맘 2023. 3. 9. 23:38

1. Input

1) int[] nums

2) int k

 

2. Output

1) nums의 부분배열 중 길이가 k인 것을 찾은 다음, 그 중 평균값이 가장 큰 부분배열의 평균을 double로 반환

 

3. Constraint

1) n == nums.length

2) 1 <= k <= n <= 10^5

3) - 10^4 <= nums[i] <= 10^4

 

4. Example

Input: nums = [1,12,-5,-6,50,3], k = 4 -> Output: 12.75000

설명: nums[1]부터 nums[4]까지의 부분 배열의 평균이 (12 - 5 - 6 + 50) / 4 = 51 / 4 = 12.75로 가장 크다.

 

5. Code

1) 첫 코드(2023/03/09)

double answer = 0;
for(int i=0 ; i<k ; i++)
    answer += nums[i];
double presum = answer;
for(int i=1 ; i<nums.length-k+1 ; i++){
    presum += nums[i+k-1]-nums[i-1];
    if(presum>answer) answer = presum;
}
return nums.length>1 ? answer/k : (double)nums[0];

- presum을 쓰지 않았을 때 시간 초과인 것이 있었는데, presum을 사용하니까 런타임이 상위 19퍼가 됐다.