문제 요약
nums 배열과 k가 주어진다.
길이가 k와 같고 최대 평균 값을 갖는 연속적인 부분 배열을 찾아 반환해야 한다.
오차: 10^5
예시
- 입력: nums = [1,12,-5,-6,50,3], k = 4
출력: 12.75000
설명: 최대 평균은 (12 - 5 - 6 + 50) / 4 = 51 / 4 = 12.75 - 입력: 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)
'코딩테스트' 카테고리의 다른 글
| LeetCode - Set Matrix Zeroes (1) | 2025.01.02 |
|---|---|
| LeetCode - Minimum Add to Make Parentheses Valid (1) | 2025.01.02 |
| LeetCode - Numberof Different Integer in a String (0) | 2024.12.30 |
| LeetCode - Restore IP Addresses (0) | 2024.12.28 |
| LeetCode - Path Sum (0) | 2024.12.25 |