LeetCode學習記錄(5)----每日溫度
阿新 • • 發佈:2018-12-19
根據每日 氣溫
列表,請重新生成一個列表,對應位置的輸入是你需要再等待多久溫度才會升高的天數。如果之後都不會升高,請輸入 0
來代替。
例如,給定一個列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73]
,你的輸出應該是 [1, 1, 4, 2, 1, 1, 0, 0]
。
提示:氣溫
列表長度的範圍是 [1, 30000]
。每個氣溫的值的都是 [30, 100]
範圍內的整數。
解題思路:先將輸入的溫度列表放入棧中,然後棧跟輸入列表進行比較,遇到比自己大的就pop。
public int[] dailyTemperatures(int[] temperatures) { Stack<Integer> s=new Stack<>(); int length=temperatures.length; int[] dailyLog=new int[length]; int temp; for(int i=length-2;i>=0;i--) { s.push(temperatures[i]);//入棧 } while(!s.empty()) { for(int i=0;i<length-1;i++) { int count=0; dailyLog[i]=count; temp=s.size();//記錄當前棧大小 for(int j=i;j<length-1;j++) { count++; //從下一天開始比較 if(s.peek()<temperatures[j+1]) { dailyLog[i]=count; s.pop(); break; } } if(temp==s.size()) {//表示沒有比當前溫度大的溫度,需要pop一下自己 s.pop(); } } } return dailyLog; }