본문 바로가기
코딩테스트

LeetCode - Maximum Average Subarray 1

by 월성참치 2024. 12. 23.

문제 요약

nums 배열과 k가 주어진다.
길이가 k와 같고 최대 평균 값을 갖는 연속적인 부분 배열을 찾아 반환해야 한다.
오차: 10^5

예시

  1. 입력: nums = [1,12,-5,-6,50,3], k = 4
    출력: 12.75000
    설명: 최대 평균은 (12 - 5 - 6 + 50) / 4 = 51 / 4 = 12.75
  2. 입력: nums = [5], k = 1
    출력: 5.00000

    풀이

  • 초기 k개의 배열의 합에서 가장 앞의 원소를 빼고 뒤의 원소를 더해가며 최대값을 찾아가는 방식이다.

    function findMaxAverage(nums, k) {
      let max = -Infinity;
      let temp = 0;
    
      for (let i = 0; i < k; i++) {
          temp += nums[i];
      }
      max = temp;
    
      for (let i = k; i < nums.length; i++) {
          temp = temp - nums[i-k] + nums[i];
          max = Math.max(max,temp)
      }
    
      return max/k;
    }

    시간복잡도 : O(n)
    공간복잡도 : O(1)