Question
Solution
题目大意:比今天温度还要高还需要几天
思路:笨方法实现,每次遍历未来几天,比今天温度高,就坐标减
Java实现:
public int[] dailyTemperatures(int[] temperatures) { int[] ans = new int[temperatures.length]; for (int i = 0; itemperatures[i]) { highIdx = j; break; } } ans[i] = highIdx - i; } return ans;}
Ref
别人实现高效的方法
Stack
public int[] dailyTemperatures(int[] temperatures) { Stackstack = new Stack<>(); int[] ret = new int[temperatures.length]; for(int i = 0; i < temperatures.length; i++) { while(!stack.isEmpty() && temperatures[i] > temperatures[stack.peek()]) { int idx = stack.pop(); ret[idx] = i - idx; } stack.push(i); } return ret;}
Array
public int[] dailyTemperatures(int[] temperatures) { int[] stack = new int[temperatures.length]; int top = -1; int[] ret = new int[temperatures.length]; for(int i = 0; i < temperatures.length; i++) { while(top > -1 && temperatures[i] > temperatures[stack[top]]) { int idx = stack[top--]; ret[idx] = i - idx; } stack[++top] = i; } return ret;}