반응형
    
    
    
  https://leetcode.com/problems/maximum-average-subarray-i/description/
Maximum Average Subarray I - LeetCode
Can you solve this real interview question? Maximum Average Subarray I - You are given an integer array nums consisting of n elements, and an integer k. Find a contiguous subarray whose length is equal to k that has the maximum average value and return thi
leetcode.com
누적합으로 해결한 문제였습니다.
📕 풀이방법
📔 입력 및 초기화
1. 누적합 vector sum을 num.size()만큼 할당 후 0으로 초기화해 선언해줍니다.2. nums의 원소를 순회하며 sum에 원소를 채워줍니다.
📔 풀이과정
1. sum[4]의 의미는 0 ~ 4번째 원소까지의 누적합이라는 의미입니다. i ~ i + k - 1까지의 누적합은 sum[i] - sum[i-k]로 구할 수 있습니다. 2. sum의 원소들을 순회하며 maxAvg값을 구해줍니다.* n이 10만까지이므로 2차원 for loop로는 시간초과가 납니다. 따라서 for loop 하나로 답을 구해야 합니다.
📔 정답 출력 | 반환
maxAvg를 반환합니다.
📕 Code
📔 C++
class Solution {
public:
    double findMaxAverage(vector<int>& nums, int k) {
        vector <double> sum(nums.size(), 0);
        sum[0] = nums[0];
        
        for(int i = 1; i < nums.size(); i++) {
            sum[i] = sum[i-1] + nums[i];
        }
        double maxAvg = sum[k-1]/k;
        for(int i = k; i < nums.size(); i++) {
            maxAvg = max(maxAvg, (sum[i] - sum[i-k])/k);
        }
        
        return maxAvg;
    }
};
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.
'Algorithm > Sweeping' 카테고리의 다른 글
| (Python3) - 프로그래머스(코딩테스트 입문) : 겹치는 선분의 길이 (1) | 2024.11.03 | 
|---|---|
| (C++) - 백준(BOJ) 20366 : 같이 눈사람 만들래? (0) | 2022.06.30 | 
| (C++) - 백준(BOJ) 15565번 : 귀여운 라이언 (0) | 2021.08.22 | 
| (C++) - 백준(BOJ) 2018번 : 수들의 합 5 (0) | 2021.08.19 | 
| (C++) - 백준(BOJ) 1689번 : 겹치는 선분 (0) | 2021.08.11 |