博主介绍:✌目前全网粉丝2W+,csdn博客专家、Java领域优质创作者,博客之星、阿里云平台优质作者、专注于Java后端技术领域。
涵盖技术内容:Java后端、算法、分布式微服务、中间件、前端、运维、ROS等。
博主所有博客文件目录索引:博客目录索引(持续更新)
视频平台:b站-Coder长路
题目链接:LeetCode、739. 每日温度
分类:数据结构/栈/单调栈
思路:单调栈一般用来解决 next greater element 问题(求一侧最近的更大/小的元素),单调栈也是“空间换时间”思想的一个实际应用。
复杂度分析:时间复杂度O(n);空间复杂度O(n)
class Solution {
//10万温度
//单调栈 当前元素与栈顶元素比较 将符合条件的温度出栈此时就可以找到该温度后最近的比它高的温度
public int[] dailyTemperatures(int[] temperatures) {
int n = temperatures.length;
//单调栈
Stack<Integer> stack = new Stack<>();
//结果集
int[] res = new int[n];
//遍历所有的温度
for (int i = 0; i < n; i ++) {
//取得当前的温度与栈中温度比较 弹出的温度即可确定最近的温度是哪个
while (!stack.isEmpty() && temperatures[i] > temperatures[stack.peek()]) {
int index = stack.pop();//索引位置
res[index] = i - index;//后几天
}
//将当前的温度索引入栈
stack.push(i);
}
return res;
}
}
大家点赞、收藏、关注、评论啦~
精彩专栏推荐订阅:在下方专栏
更多博客与资料可查看获取联系方式,文末获取开发资源及更多资源博客获取
整理者:长路 时间:2024.2.13