力扣hot100 每日温度 单调递减栈

Problem: 739. 每日温度
力扣hot100 每日温度 单调递减栈_第1张图片

文章目录

  • 思路
  • 复杂度
  • 单调栈

思路

‍ 参考题解

复杂度

⏰ 时间复杂度: O ( n ) O(n) O(n)
空间复杂度: O ( n ) O(n) O(n)

单调栈

class Solution {
	public int[] dailyTemperatures(int[] temperatures)
	{
		int n = temperatures.length;
        int[] t =  temperatures;
		int[] res = new int[n];//默认为 0
		Stack stack = new Stack<>();//单调递减栈
		for (int i = 0; i < n; i++)
		{
			while (!stack.isEmpty() && t[i] > t[stack.peek()])
			{
        // 栈顶元素只有在出现 t[i] 比它大时才会出栈,i 就是 就是 栈顶元素 的后面最近的升稳天、
                Integer idx = stack.pop();
				res[idx] = i - idx;
			}
			stack.add(i);//所有小于 t[i] 的元素都会出栈,所有当前 t[i] 肯定是小于 栈顶元素的,入栈
		}
		return res;
	}
}

你可能感兴趣的:(力扣,hot100,leetcode)