三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

072每日温度

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)。解题思路:采用单调栈,栈中存储下标,满足从栈底到栈顶的下标对应的温度列表中的温度依次递减。当遇到不满足递减的温度时,就可以弹出所有对应温度比当前温度小的下标,并根据下标清算这些弹出元素的答案。

看了官方题解后的解答:

//官方的思路与解答与我的解答完全一致,故不重复赘述

分析:无。

总结

  • 本题主要需要掌握单调栈的应用。
← 返回列表