题目描述
题解
一个非常典型的,看到题干就能想到 栈 的题目
public int[] dailyTemperatures(int[] temperatures) {
Stack<Map> stack = new Stack<>();
int tLen = temperatures.length;
int[] res = new int[tLen];
//题目规定了length不会小于1,所以不做判断了
Map map = new HashMap();
map.put("index", 0);
map.put("value", temperatures[0]);
stack.push(map);
for(int i=1; i<tLen; i++){
//这一步的作用是当前的元素对比栈顶元素,直到栈顶元素更大
while(!stack.isEmpty()){
Map peekMap = stack.peek();
int temp = (int)peekMap.get("value");
if(temperatures[i] > temp){
res[(int)peekMap.get("index")] = i-temp;
stack.pop();
}else{
break;
}
}
Map tempMap = new HashMap();
tempMap.put("index", i);
tempMap.put("value", temperatures[i]);
stack.push(tempMap);
}
return res;
}