日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[Leedcode][JAVA][第739题][每日温度][暴力][单调栈]

發布時間:2023/12/10 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [Leedcode][JAVA][第739题][每日温度][暴力][单调栈] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【問題描述】[中等]

根據每日 氣溫 列表,請重新生成一個列表,對應位置的輸出是需要再等待多久溫度才會升高超過該日的天數。如果之后都不會升高,請在該位置用 0 來代替。例如,給定一個列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的輸出應該是 [1, 1, 4, 2, 1, 1, 0, 0]。提示:氣溫 列表長度的范圍是 [1, 30000]。每個氣溫的值的均為華氏度,都是在 [30, 100] 范圍內的整數。

【解答思路】

1. 暴力
  • 新建數組
  • 遍歷找到比當前位置i大的 坐標相減 沒找到 賦值0
    時間復雜度:O(N^2) 空間復雜度:O(1)
int len = T.length;if(len == 0 || len ==1){return new int[1];}int[] high = new int[len];high[len-1]=0;for(int i=0;i<len-1;i++){for(int j=i+1;j<len;j++){if(T[j]>T[i]){high[i] = j-i;break;}if(j==len-1 &&(T[len-1]<=T[i]) ){high[i]=0;}}}return high;} public int[] dailyTemperatures(int[] T) {int[] res = new int[T.length];for (int i = 0; i < T.length; i++) { int j = i + 1;while (j < T.length && T[i] >= T[j]) { j++; }res[i] = j < T.length && T[i] < T[j] ? j - i : 0;}return res;}
2. 單調棧




時間復雜度:O(N) 空間復雜度:O(N)

public int[] dailyTemperatures(int[] T) {int length = T.length;int[] ans = new int[length];Deque<Integer> stack = new LinkedList<Integer>();for (int i = 0; i < length; i++) {int temperature = T[i];while (!stack.isEmpty() && temperature > T[stack.peek()]) {int prevIndex = stack.pop();ans[prevIndex] = i - prevIndex;}stack.push(i);}return ans;}

【總結】

1.暴力優化 單調棧解決柱狀圖高低比較問題
2.單調棧

出棧都要做的判斷!stack.isEmpty()

轉載參考鏈接:https://leetcode-cn.com/problems/daily-temperatures/solution/mei-ri-wen-du-by-leetcode-solution

總結

以上是生活随笔為你收集整理的[Leedcode][JAVA][第739题][每日温度][暴力][单调栈]的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。