【LeetCode-每日一题】-739-每日温度

1. 题目描述

在这里插入图片描述

2. 题目解析

  1. 大致的意思是:在今天的以后几天内,有哪一天是比今天的气温升高的,如果有的话,求出其中的天数差,如果没有的话,用0代替。
  2. 一开始用的暴力,然后超时。
  3. 这个题目用到了单调栈的原理。
    在这里插入图片描述

3. 题目代码

public static int[] dailyTemperatures(int[] T) {
		int[] list = new int[T.length];
		int num = 0;
		Stack<Integer> stack = new Stack<>();
		for (int i = 0; i < list.length; i++) {
			// 字符串长度为 0,返回 true,否则返回 false。
			// Object push(Object element):将元素推送到堆栈顶部。
			// Object pop():移除并返回堆栈的顶部元素。如果我们在调用堆栈为空时调用pop(),则抛出’EmptyStackException’异常。
			// Object peek():返回堆栈顶部的元素,但不删除它。
			// boolean empty():如果堆栈顶部没有任何内容,则返回true。否则,返回false。
			// int search(Object element):确定对象是否存在于堆栈中。如果找到该元素,它将从堆栈顶部返回元素的位置。否则,它返回-1。
			while (!stack.isEmpty() && T[i] > T[stack.peek()]) {
				list[stack.peek()] = i - stack.peek();
				stack.pop();
			}
			stack.add(i);
		}
		return list;
	}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章