package com.zerroi.leetcode.Three27; import java.util.Stack; public class DailyTemperatures { public static void main(String[] args) { SolutionFirst solutionFirst = new SolutionFirst(); int[] res = solutionFirst.dailyTemperatures(new int[]{55, 38, 53, 81, 61, 93, 97, 32, 43, 78}); } } class SolutionFirst { public int[] dailyTemperatures(int[] temperatures) { int[] next = new int[temperatures.length]; for (int i = 0; i < temperatures.length - 1; i++) { int top = temperatures[i]; int index = i + 1; if (temperatures[i + 1] > top) { next[i]++; } else { boolean flag = false; while (index < temperatures.length) { if (temperatures[index] > top) { flag = true; break; } index++; if (index > 200) { break; } } if (flag) { next[i] = index - i; } else { next[i] = 0; } } } return next; } public int[] dailyTemperatures2(int[] temperatures) { int[] next = new int[temperatures.length]; Stack stack = new Stack<>(); for (int i = 0; i < temperatures.length; i++) { while (!stack.isEmpty() && temperatures[i] > temperatures[stack.peek()]) { int prevIndex = stack.pop(); next[prevIndex] = i - prevIndex; } stack.push(i); } return next; } }