[Monotonic Stack, Medium] Daily Temperatures

송재호·2025년 4월 3일
0

https://leetcode.com/problems/daily-temperatures/description/?envType=study-plan-v2&envId=leetcode-75

단조스택 문제.
각 순회마다 해야하는 것

  • 스택의 peek()보다 현재 온도가 높으면, 현재 인덱스와 원래 인덱스의 차액을 갱신해주기
  • 스택에 인덱스 넣기

answer 배열은 int배열이므로 모두 0으로 초기화
스택에서 값 비교하여 현재 온도가 높다면 이전의 더 낮은 온도 인덱스의 값을 차액만큼으로 갱신

class Solution {
    public int[] dailyTemperatures(int[] temperatures) {
        int n = temperatures.length;
        int[] answer = new int[n];

        Stack<Integer> stack = new Stack<>();
        for (int i=0; i<n; i++) {
            while (!stack.isEmpty() && temperatures[i] > temperatures[stack.peek()]) {
                int prev = stack.pop();
                answer[prev] = i - prev;
            }
            stack.push(i);
        }
        return answer;
    }
}
profile
식지 않는 감자

0개의 댓글