LeetCode - Daily Temperatures
Given a list of daily temperatures, produce a list that, for each day in the input, tells you how many days you would have to wait until a warmer temperature. If there is no future day for which this is possible, put 0 instead. For example, given the list temperatures = [73, 74, 75, 71, 69, 72, 76, 73], your output should be [1, 1, 4, 2, 1, 1, 0, 0]. Note: The length of temperatures will be in the range [1, 30000]. Each temperature will be an integer in the range [30, 100].
竟然暴力解法也可AC:
class Solution {
public int[] dailyTemperatures(int[] temperatures) {
if(temperatures == null || temperatures.length == 0){
return null;
}
int len = temperatures.length;
int[] res = new int[len];
for(int i=0; i<len; i++){
int count = 0;
int cur = temperatures[i];
for(int j = i+1; j<len; j++){
int fu = temperatures[j];
if(fu > cur){
count = j-i;
break;
}
}
res[i] = count;
}
return res;
}
}
另一种使用stack的解法:
class Solution { public int[] dailyTemperatures(int[] temperatures) { if(temperatures == null || temperatures.length == 0){ return null; } int len = temperatures.length; int[] res = new int[len]; Stack<Integer> stack = new Stack<>(); for(int i = 0; i<len; i++){ while(!stack.isEmpty() && temperatures[i] > temperatures[stack.peek()]){ int temp = stack.pop(); res[temp] = i - temp; } stack.push(i); } return res; } }
posted on 2018-09-23 08:21 IncredibleThings 阅读(109) 评论(0) 收藏 举报
浙公网安备 33010602011771号