题目来源
题目描述
思路
1.res的最后一个数肯定是0
2.从后往前遍历,定义一个index为可能是离这一天的更高温下标
3.如果确实是更高闻,res[i]=index-i
4.不是更高温,index+=res[index]也就是index的更高温
5.循环3与4,如果res[index]=0说明找不到更高温,置0
代码
public int[] dailyTemperatures(int[] temperatures) {
int[] res=new int[temperatures.length];
res[res.length-1]=0;
for(int i=res.length-2;i>=0;i--){
int index=i+1;
while(true){
if(temperatures[i]<temperatures[index]){
res[i]=index-i;
break;
}else{
if(res[index]==0){
res[i]=0;
break;
}else{
index+=res[index];
}
}
}
}
return res;
}