【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;
	}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章