072每日温度
每日温度
题目链接:https://leetcode.cn/problems/daily-temperatures/description/?envType=study-plan-v2&envId=top-100-liked
我的解答:
//方法:单调栈 //时间复杂度:O(n) //空间复杂度:O(n) public int[] dailyTemperatures(int[] temperatures) { int n = temperatures.length; Deque<Integer> stack = new LinkedList<>(); int[] ans = new int[n]; Arrays.fill(ans,0); for(int i=0; i<n; i++){ //清算比当前温度小的所有温度 while(!stack.isEmpty() && temperatures[i] > temperatures[stack.peek()]){ int top = stack.pop(); ans[top] = i - top; } stack.push(i); } return ans; }分析:代码的时间复杂度为O(n),空间复杂度为O(n)。解题思路:采用单调栈,栈中存储下标,满足从栈底到栈顶的下标对应的温度列表中的温度依次递减。当遇到不满足递减的温度时,就可以弹出所有对应温度比当前温度小的下标,并根据下标清算这些弹出元素的答案。
看了官方题解后的解答:
//官方的思路与解答与我的解答完全一致,故不重复赘述分析:无。
总结
- 本题主要需要掌握单调栈的应用。
