[LeetCode] 739. Daily Temperatures
阿新 • • 發佈:2018-11-10
題:https://leetcode.com/problems/daily-temperatures/description/
題目
Given a list of daily temperatures T, return a list such 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 of temperatures T = [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].
題目大意
求陣列中元素與下一個比它大的元素之間的距離,若沒有距離設為0。
思路
動態規劃,其實 覺得更像 貪心。
狀態dp[i] :陣列中元素與下一個比它大的元素之間的距離。
初始化:dp[Tlen-1] = 0;
狀態轉移:
設j = 1;若T[i]<T[i+j],則 dp[i] = j,否則,若dp[i+j] == 0,dp[i] = 0;
j = j + dp[i+j],繼續上述操作。
class Solution {
public int[] dailyTemperatures(int[] T) {
int Tlen = T.length;
int[] dp = new int[Tlen];
for(int i = Tlen-2 ;i>=0;i--){
int j = 1;
while(T[i]>=T[i+j]){
if(dp[i+j]==0){
j = 0;
break;
}
j = j + dp[i+j];
}
dp[i] = j;
}
return dp;
}
}