问题
例子
思路
-
方法1
$$$$
暴力
-
方法2
$$$$
动态规划
res数组保存结果数组
从后向前遍历
arr[i]<arr[i+1] res[i]=1
else
res[i+1]=0 res[i]=0
res[i+1]!=0,就比较arr[i]和arr[i+1+res[i+1]]比第i+1天大的那天
代码
//方法1
int[] res = new int[arr.length];
for(int i=0; i<arr.length; i++) {
for(int j=i+1; j<arr.length; j++)
if(arr[j]>arr[i]){
res[i]=j-i;
break;
}
}
return res;
//方法2
class Solution {
public int[] dailyTemperatures(int[] arr) {
int[] res = new int[arr.length];
for(int i=arr.length-2; i>=0; i--) {
for(int j=i+1; j<=arr.length-1; j+=res[j]) {
if(arr[i]<arr[j]) {
res[i]=j-i;//j为i+1时,为1
break;
}
//arr[i]>arr[j]
if(res[j]==0) {
res[i]=0;
break;
}
}
}
return res;
}
}