Daily Temperatures

ㅋㅋ·2022년 12월 18일
0

알고리즘-leetcode

목록 보기
73/135

정수들이 담긴 벡터를 받고,

벡터의 내의 각각의 숫자가 순서대로 진행될 때 몇번 연속 최대 값인지를 구하는 문제

단 아직 해당 값보다 더 큰 값이 나오지 않은 경우는 0으로 계산

class Solution {
public:
    vector<int> dailyTemperatures(vector<int>& temperatures) {
        
        stack<pair<int, int>> temp{};
        temp.push({0, temperatures.front()});

        int length = temperatures.size();
        vector<int> result(length);
        
        for (int i = 1; i < length; i++)
        {
            if (temp.top().second < temperatures[i])
            {
                do
                {
                    result[temp.top().first] = i - temp.top().first;
                    temp.pop();
                } while (temp.empty() == false && temp.top().second < temperatures[i]);
            }

            temp.push({i, temperatures[i]});
        }

        return result;
    }
};

0개의 댓글