leetcode|leetcode 739. Daily Temperatures 每日温度(中等)
一、题目大意
标签: 栈和队列
https://leetcode.cn/problems/daily-temperatures
给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。
【leetcode|leetcode 739. Daily Temperatures 每日温度(中等)】示例 1:
输入: temperatures = [73,74,75,71,69,72,76,73]示例 2:
输出: [1,1,4,2,1,1,0,0]
输入: temperatures = [30,40,50,60]示例 3:
输出: [1,1,1,0]
输入: temperatures = [30,60,90]
输出: [1,1,0]
提示:
- 1 <= temperatures.length <= 105
- 30 <= temperatures[i] <= 100
二、解题思路什么是单调栈?单调栈通过维持栈内值的单调递增(递减)性,在整体O(n)的时间内处理需要大小比较的问题。
三、解题方法 3.1 Java实现
public class Solution {
public int[] dailyTemperatures(int[] temperatures) {
int[] ans = new int[temperatures.length];
Stack desStack = new Stack<>();
for (int i = 0;
i < temperatures.length;
i++) {
while (!desStack.isEmpty()) {
int preIndex = desStack.peek();
if (temperatures[i] <= temperatures[preIndex]) {
break;
}
desStack.pop();
ans[preIndex] = i - preIndex;
}
desStack.push(i);
}
return ans;
}
}
四、总结小记
- 2022/8/10 下雨、下雪本是很好玩的事,大了之后也不尽然,出行、生产、工作都会受到影响
推荐阅读
- leetcode|leetcode 232. Implement Queue using Stacks 用栈实现队列(简单)
- leetcode|leetcode 769. Max Chunks To Make Sorted 最多能完成排序的块(中等)
- leetcode|leetcode 48. Rotate Image 旋转图像(Medium)
- leetcode|leetcode 448. Find All Numbers Disappeared in an Array (简单)
- leetcode 504. Base 7 七进制数 (简单)
- leetcode 204. Count Primes 计数质数 (Easy)
- [leetcode|[leetcode 算法练习] - 14. 最长公共前缀
- LeetCode|LeetCode 探索初级算法-数组(03 旋转数组-20200316)
- leetcode|leetcode 665. Non-decreasing Array 非递减数列(中等)
- #|LeetCode每日一题——1161. 最大层内元素和