Search

Maximum Average Subarray I

문제 설명 : 정수 배열 nums와 정수 k가 주어지며, 길이가 k인 연속적인 부분 배열 중 최대 평균 값을 가지는 부분 배열을 찾아 이 값을 반환
풀이 방법
범위를 지정하며, 값을 구하면 된다.
다만, 합산을 구하기 위해 매번 O(k) 만큼 순회하지 않고 맨 앞 값을 빼고 맨 뒤 값을 더하는 방식으로 총합을 변경한다.
시간복잡도 : O(N)O(N)
성공 코드
class Solution: def findMaxAverage(self, nums: List[int], k: int) -> float: target_range_sum = sum(nums[:k]) max_result = target_range_sum / k for i in range(1, len(nums) - k + 1): target_range_sum -= nums[i - 1] target_range_sum += nums[i + k - 1] max_result = max(max_result, target_range_sum / k) return max_result
Python
복사