주어진 정수 배열 temperatures는 일일 온도를 나타내며, 배열 answer는 다음과 같이 반환됩니다. answer[i]는 i번째 날 이후 따뜻한 온도를 얻기 위해 기다려야 하는 날의 수입니다. 이러한 경우가 없는 경우에는 answer[i] == 0으로 유지됩니다.
Example 1:
Input: temperatures = [73,74,75,71,69,72,76,73]
Output: [1,1,4,2,1,1,0,0]
Example 2:
Input: temperatures = [30,40,50,60]
Output: [1,1,1,0]
Example 3:
Input: temperatures = [30,60,90]
Output: [1,1,0]
문제 링크
https://leetcode.com/problems/daily-temperatures/description/
N
을 확인한다.N
은 input 배열의 길이다.순차적인 비교
, 그리고 조건 충족 시 처리
가 필요할 때는 Stack
자료구조를 사용하는 것이 좋다.public static int[] dailyTemperatures(int[] temperatures) {
int[] result = new int[temperatures.length];
Stack<Integer> stack = new Stack<>();
for (int currentDay = 0; currentDay < temperatures.length; currentDay++) {
while (!stack.isEmpty() && temperatures[currentDay] > temperatures[stack.peek()]) {
int prevDay = stack.pop();
result[prevDay] = currentDay - prevDay;
}
stack.push(currentDay);
}
return result;
}
분석하는 방법이 되게 체계적이신 것 같아요~