class Solution {
public int[] dailyTemperatures(int[] temperatures) {
int len = temperatures.length;
int[] maxIndex = new int[len];
maxIndex[len-1] = len-1;
for(int i = len - 2;i >= 0;i--){
maxIndex[i] = nearMax(temperatures,maxIndex,i);
}
for(int i = 0;i < len;i++)
maxIndex[i] = maxIndex[i] - i;
return maxIndex;
}
public int nearMax(int[] temperatures,int[] maxIndex,int i){
int index = i+1;
while(true){
int temp = index;
int num = temperatures[index];
if(num > temperatures[i])
return index;
index = maxIndex[index];
if(temp == index)
break;
}
return i;
}
}