739. Daily Temperatures - LeetCode
阿新 • • 發佈:2018-07-30
rip png uri 實現 public 題目 length top -s
Question
739.?Daily Temperatures
Solution
題目大意:比今天溫度還要高還需要幾天
思路:笨方法實現,每次遍歷未來幾天,比今天溫度高,就坐標減
Java實現:
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; }
Ref
別人實現高效的方法
https://leetcode.com/problems/daily-temperatures/discuss/109832/Java-Easy-AC-Solution-with-Stack
Stack
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; }
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; }
739. Daily Temperatures - LeetCode