題目大意:比今天溫度還要高還須要幾天code
思路:笨方法實現,每次遍歷將來幾天,比今天溫度高,就座標減ip
Java實現:leetcode
public int[] dailyTemperatures(int[] temperatures) { int[] ans = new int[temperatures.length]; for (int i = 0; i<temperatures.length; i++) { int highIdx = i; for (int j=i+1; j<temperatures.length; j++) { if (temperatures[j] > temperatures[i]) { highIdx = j; break; } } ans[i] = highIdx - i; } return ans; }
別人實現高效的方法get
https://leetcode.com/problems/daily-temperatures/discuss/109832/Java-Easy-AC-Solution-with-Stackit
Stackio
public int[] dailyTemperatures(int[] temperatures) { Stack<Integer> stack = 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; }
Arrayclass
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; }