<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      【單調棧】

      單調棧

      采取的是空間換時間的方式。將歷史信息保存在具有自己定義出入棧規則的棧中,來達到記憶的效果,實現了空間換時間。
      自己定義的出入棧規則,從棧頂到棧底單調遞增來舉例:在這就是指棧內的順序只能是自頂向底,依次遞增才可以入棧。如果當前待入棧的元素大于棧頂,就需要把這個棧頂元素彈出,并循環比較下一個棧頂元素,直至棧頂元素大于當前待入棧元素才可以。

      image

      什么時候用單調棧呢?

      選自代碼隨想錄

      通常是一維數組,要尋找任一個元素的右邊或者左邊第一個比自己大或者小的元素的位置,此時我們就要想到可以用單調棧了

      以leetcode的一道題為例

      739. 每日溫度

      給定一個整數數組 temperatures ,表示每天的溫度,返回一個數組 answer ,其中 answer[i] 是指對于第 i 天,下一個更高溫度出現在幾天后。如果氣溫在這之后都不會升高,請在該位置用 0 來代替。

      輸入: temperatures = [73,74,75,71,69,72,76,73]
      輸出: [1,1,4,2,1,1,0,0]

      如果當前待入棧元素大于棧頂,說明當前元素就是第一個比棧頂大的元素,此時就需要把棧頂元素彈出,并比較下一個棧頂元素。

      class Solution {
          public int[] dailyTemperatures(int[] temperatures) {
      
              int n = temperatures.length;
              int[] result = new int[n];
      
              Deque<Integer> stack = new LinkedList<>();
              stack.push(0);
              for (int i = 1; i < n; i++) {
                  // 隊列不為空,且 當前帶入棧元素 大于 當前棧頂元素  執行 出棧, 并計算棧頂元素的任務
                  while (!stack.isEmpty() && temperatures[i] > temperatures[stack.peek()]) {
                      result[stack.peek()] = i - stack.pop();
                  }
                  // 隊列空了,或者是已經比較完了,準備入棧了,入棧
                  stack.push(i);
              }
              return result;
          }
      }
      

      84.柱狀圖中最大的矩形

      image

      class Solution {
          public int largestRectangleArea(int[] heights) {
              int res = 0;
              Deque<Integer> stack = new LinkedList<>();
      
              // 數組擴容,在頭和尾各加入一個元素
              int [] newHeights = new int[heights.length + 2];
              newHeights[0] = 0;
              newHeights[newHeights.length - 1] = 0;
              for (int index = 0; index < heights.length; index++){
                  newHeights[index + 1] = heights[index];
              }
      
              heights = newHeights;
      
              stack.push(0);
              for (int i = 1; i < heights.length; i++){
                  if(heights[i] > heights[stack.peek()]){
                      stack.push(i);
                  } else if( heights[i] == heights[stack.peek()]){
                      stack.pop();
                      stack.push(i);
                  }else {
                      while (!stack.isEmpty() && heights[i] < heights[stack.peek()]){
                          int mid = stack.pop();
                          if (!stack.isEmpty()){
                              int left = stack.peek();
                              int right = i;
                              int w = right - left - 1;
                              int h = heights[mid];
                              res = Math.max(res, w * h);
                          }
                      }
                      stack.push(i);
                  }
              }
              return res;
      
      
          }
      }
      
      posted @ 2024-11-29 11:25  chendsome  閱讀(24)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产精品入口麻豆| 国产啪视频免费观看视频| 色一情一乱一区二区三区码 | 加勒比中文字幕无码一区| 国产精品小视频一区二页| 老河口市| 白嫩人妻精品一二三四区| 国产成人精品午夜福利在线观看| 波多野结衣久久一区二区| 国产成人无码一二三区视频| 亚洲色一区二区三区四区| 日韩av一区二区三区不卡| 福利一区二区视频在线| 亚洲最大福利视频网| 亚洲精品国产熟女久久久| 亚洲欧美日韩综合久久| 自拍亚洲综合在线精品| 午夜精品久久久久久| 国产色婷婷亚洲99精品小说| 亚洲熟妇国产熟妇肥婆| 久久精品亚洲精品国产区| 海淀区| 国产三级精品福利久久| 五月天天天综合精品无码| 亚洲国产精品一二三区| 中文字幕日韩一区二区不卡| 亚洲精品一品二品av| 国产精品一区在线免费看| 日本深夜福利在线观看| 国产亚洲精品aaaa片app| 亚洲成a人无码av波多野| 日韩一级伦理片一区二区| 中文字幕精品无码一区二区| 国产亚洲精品AA片在线爽| 一区二区三区激情都市| 亚洲av专区一区| 亚洲色在线v中文字幕| A级日本乱理伦片免费入口| 中文字幕 欧美日韩| 深夜视频国产在线观看| 人人澡人摸人人添|