精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一篇學會包含 Min 函數的棧

開發 前端
定義棧的數據結構,請在該類型中實現一個能夠得到棧的最小元素的 min 函數在該棧中,調用 min、push 及 pop 的時間復雜度都是 O(1)。

[[437859]]

本文轉載自微信公眾號「程序員千羽」,作者程序員千羽 。轉載本文請聯系程序員千羽公眾號。

Leetcode : https://leetcode-cn.com/problems/bao-han-minhan-shu-de-zhan-lcof

“GitHub : https://gitee.com/nateshao/leetcode/blob/main/algo-notes/src/main/java/com/nateshao/sword_offer/topic_23_MinStack/MinStack.java

包含min函數的棧

“題目描述 :定義棧的數據結構,請在該類型中實現一個能夠得到棧的最小元素的 min 函數在該棧中,調用 min、push 及 pop 的時間復雜度都是 O(1)。示例:

  1. MinStack minStack = new MinStack(); 
  2. minStack.push(-2); 
  3. minStack.push(0); 
  4. minStack.push(-3); 
  5. minStack.min();   --> 返回 -3. 
  6. minStack.pop(); 
  7. minStack.top();   --> 返回 0. 
  8. minStack.min();   --> 返回 -2. 
  • 提示:

各函數的調用總次數不超過 20000 次

解題思路: 定義兩個棧,一個存放入的值。另一個存最小值。

“普通棧的 push() 和 pop() 函數的復雜度為 O(1) ;而獲取棧最小值 min() 函數需要遍歷整個棧,復雜度為 O(N) 。

  • 本題難點:將min() 函數復雜度降為0(1),可通過建立輔助棧實現;
    • 數據棧A:棧A用于存儲所有元素,保證入棧push() 函數、出棧pop() 函數、獲取棧頂top()函數的正常邏輯。
    • 輔助棧B:棧B中存儲棧A中所有非嚴格降序的元素,則棧A中的最小元素始終對應棧B的棧頂元素,即min() 函數只需返回棧B的棧頂元素即可。

因此,只需設法維護好棧B的元素,使其保持非嚴格降序,即可實現min() 函數的0(1)復雜度。

函數設計:

  • push(x) 函數: 重點為保持棧 B 的元素是 非嚴格降序 的。
    • 將 x 壓入棧 A(即 A.add(x) );
    • 若 ① 棧 B 為空 或 ② x 小于等于 棧 B 的棧頂元素,則將 x 壓入棧 B (即 B.add(x) )。
  • pop() 函數: 重點為保持棧 A, B 的 元素一致性 。
    • 執行棧 A 出棧(即 A.pop() ),將出棧元素記為 y ;
    • 若 y 等于棧 B 的棧頂元素,則執行棧 B 出棧(即 B.pop() )。
  • top() 函數: 直接返回棧 A 的棧頂元素即可,即返回 A.peek() 。
  • min() 函數: 直接返回棧 B 的棧頂元素即可,即返回 B.peek() 。

復雜度分析:

  • 時間復雜度 O(1) : push(), pop(), top(), min() 四個函數的時間復雜度均為常數級別。
  • 空間復雜度 O(N) : 當共有 N個待入棧元素時,輔助棧 B最差情況下存儲 N 個元素,使用 O(N)額外空間。

“Java 代碼中,由于 Stack 中存儲的是 int 的包裝類 Integer ,因此需要使用 equals() 代替 == 來比較值是否相等。此題如果用==將會無法通過 Integer的equals重寫過,比較的是內部value的值, ==如果在[-128,127]會被cache緩存,超過這個范圍則比較的是對象是否相同

  1. package com.nateshao.sword_offer.topic_23_MinStack; 
  2.  
  3. import java.util.Stack; 
  4.  
  5. /** 
  6.  * @date Created by 邵桐杰 on 2021/11/28 21:38 
  7.  * @微信公眾號 程序員千羽 
  8.  * @個人網站 www.nateshao.cn 
  9.  * @博客 https://nateshao.gitee.io 
  10.  * @GitHub https://github.com/nateshao 
  11.  * @Gitee https://gitee.com/nateshao 
  12.  * Description: 包含min函數的棧 
  13.  * 思路:定義兩個棧,一個存放入的值。另一個存最小值。 
  14.  */ 
  15. public class MinStack { 
  16.     private Stack<Integer> stack1; // 數據棧 
  17.     private Stack<Integer> stack2; // 輔助棧,記錄每次有元素進棧后或者出棧后,元素的最小值 
  18.  
  19.     /** 
  20.      * initialize your data structure here. 
  21.      */ 
  22.     public MinStack() { 
  23.         // 初始化輔助棧和數據棧 
  24.         stack1 = new Stack<>(); 
  25.         stack2 = new Stack<>(); 
  26.     } 
  27.  
  28.     public void push(int x) { 
  29.         // 數據棧,進棧 
  30.         stack1.push(x); 
  31.         // 如果記錄當前數據棧中最小值的輔助棧為空,或者最小值小于 x,則將 x 設置為最小值,即進輔助棧 
  32.         if (stack2.isEmpty() || stack2.peek() >= x) stack2.push(x); 
  33.     } 
  34.  
  35.     public void pop() { 
  36.         if (stack1.pop().equals(stack2.peek())) stack2.pop(); 
  37.     } 
  38.  
  39.     public int top() { 
  40.         return stack1.peek(); 
  41.     } 
  42.  
  43.     public int min() { 
  44.         return stack2.peek(); 
  45.     } 
  46.  
  47.     /** 
  48.      * Your MinStack object will be instantiated and called as such: 
  49.      * MinStack obj = new MinStack(); 
  50.      * obj.push(x); 
  51.      * obj.pop(); 
  52.      * int param_3 = obj.top(); 
  53.      * int param_4 = obj.min(); 
  54.      */ 
  55.  
  56.     /** 
  57.      * 精選解答 
  58.      */ 
  59.     class MinStack1 { 
  60.  
  61.         Stack<Integer> A, B; 
  62.  
  63.         public MinStack1() { 
  64.             A = new Stack<>(); 
  65.             B = new Stack<>(); 
  66.         } 
  67.  
  68.         public void push(int x) { 
  69.             A.add(x); 
  70.             if (B.empty() || B.peek() >= x) 
  71.                 B.add(x); 
  72.         } 
  73.  
  74.         public void pop() { 
  75.             if (A.pop().equals(B.peek())) 
  76.                 B.pop(); 
  77.         } 
  78.  
  79.         public int top() { 
  80.             return A.peek(); 
  81.         } 
  82.  
  83.         public int min() { 
  84.             return B.peek(); 
  85.         } 
  86.     } 

 

參考鏈接:https://leetcode-cn.com/problems/bao-han-minhan-shu-de-zhan-lcof/solution

 

責任編輯:武曉燕 來源: 程序員千羽
相關推薦

2022-04-12 08:30:52

回調函數代碼調試

2022-09-07 07:27:36

函數元素

2022-01-02 08:43:46

Python

2022-02-07 11:01:23

ZooKeeper

2021-08-01 07:19:16

語言OpenrestyNginx

2022-06-30 22:53:18

數據結構算法

2021-10-26 10:40:26

代理模式虛擬

2022-05-17 08:02:55

GoTryLock模式

2021-12-04 22:05:02

Linux

2021-07-06 08:59:18

抽象工廠模式

2023-11-28 08:29:31

Rust內存布局

2023-01-03 08:31:54

Spring讀取器配置

2021-07-02 09:45:29

MySQL InnoDB數據

2022-08-23 08:00:59

磁盤性能網絡

2021-05-11 08:54:59

建造者模式設計

2021-07-05 22:11:38

MySQL體系架構

2022-08-26 09:29:01

Kubernetes策略Master

2021-04-29 10:18:18

循環依賴數組

2021-07-16 22:43:10

Go并發Golang

2021-07-02 08:51:29

源碼參數Thread
點贊
收藏

51CTO技術棧公眾號

日韩精品欧美激情| 国产午夜亚洲精品理论片色戒| 俺去了亚洲欧美日韩| 午夜剧场在线免费观看| 黄色av电影在线播放| 国产东北露脸精品视频| 欧美激情区在线播放| 国产一级免费片| 不卡一二三区| 国产精品久久久久久久久果冻传媒 | 日韩国产一级片| 国产视频第二页| 亚洲精品少妇| 在线看福利67194| 色黄视频免费看| 极品av在线| 国产蜜臀av在线一区二区三区| 国产日韩精品在线| 成年人免费看毛片| 日韩1区2区| 精品电影一区二区三区| 激情综合网俺也去| 自由的xxxx在线视频| 91蜜桃免费观看视频| 国产在线精品播放| 最新中文字幕一区| 中文精品久久| 亚洲欧洲日产国产网站| 男女视频在线观看网站| 免费亚洲电影| 一区二区三区精品在线观看| 日本一区二区三区四区高清视频| 91精品国产乱码久久久| 亚洲经典在线| 欧美成人合集magnet| 欧美日韩高清丝袜| 成人知道污网站| 91国偷自产一区二区三区成为亚洲经典| 国产系列第一页| 精华区一区二区三区| 国产91对白在线观看九色| 国产伦精品一区二区三区精品视频| 国产成人精品av久久| 久久香蕉国产| 亚洲日本欧美中文幕| 国产熟女高潮一区二区三区| 日韩一二三区在线观看| 欧美精品在线观看一区二区| 久热免费在线观看| 日本理论片午伦夜理片在线观看| 国产精品久久综合| 日韩国产在线一区| 一区二区视频在线播放| 欧美这里只有精品| 污视频在线免费| 美国欧美日韩国产在线播放| 欧美一级电影久久| 国产中文字幕免费| 91精品婷婷色在线观看| 中文字幕亚洲无线码在线一区| 久久久国产精品无码| 超碰在线成人| 精品乱人伦小说| 中文字幕第六页| 久久久久久久久久久久电影| 欧美精品在线一区二区| 色播五月综合网| 91伊人久久| 欧美日韩你懂的| 特级丰满少妇一级| 欧美成人免费全部网站| 欧美日韩免费观看一区二区三区 | 成人在线免费小视频| 亚洲精选在线观看| 久久丫精品国产亚洲av不卡| 精品久久97| 日韩成人在线播放| 90岁老太婆乱淫| 人体久久天天| 亚洲午夜激情免费视频| 亚洲精品一区二区三区影院忠贞| 精品视频日韩| 日韩有码在线观看| 三级影片在线看| 欧美视频成人| 91精品国产乱码久久久久久久久 | 在线影视一区二区三区| 蜜桃免费在线视频| 亚洲资源在线| 精品国产一区二区三区久久影院| 久久福利小视频| 国产欧美日韩| 美女黄色丝袜一区| 日本免费一二三区| 日韩精彩视频在线观看| 国产欧美日韩丝袜精品一区| 国产日韩一级片| 波多野结衣91| 日韩高清专区| 二区在线播放| 五月婷婷综合网| 性欧美videossex精品| 成人短视频软件网站大全app| 日韩一区二区免费在线电影| 午夜剧场免费看| 欧美日韩一二| 欧美另类69精品久久久久9999| 日韩 国产 在线| 蜜桃久久久久久久| 成人免费淫片aa视频免费| 成人久久久精品国产乱码一区二区| 97久久超碰国产精品电影| 亚洲v欧美v另类v综合v日韩v| √天堂8在线网| 色婷婷久久久综合中文字幕| 日本美女久久久| 精品在线观看入口| 欧美高跟鞋交xxxxxhd| 一级片在线观看免费| 国产一区二区三区在线观看免费视频| 91久久国产综合久久蜜月精品| 四虎精品在线| 亚洲综合在线视频| 午夜久久久精品| 欧美亚视频在线中文字幕免费| 中文字幕在线精品| 亚洲精品1区2区3区| 狠狠v欧美v日韩v亚洲ⅴ| 精品蜜桃一区二区三区| 成人在线app| 日本精品视频一区二区| 国模大尺度视频| 成人羞羞网站入口| 欧美一级免费看| 丰满少妇一级片| 亚洲视频在线一区| 亚洲高清在线免费观看| 日韩有码av| 欧美黄色www| 一区二区日韩视频| 欧美激情综合在线| 免费成人午夜视频| 中文字幕亚洲在线观看| 久久精品电影网站| 中文字幕在线网站| 久久精品人人做人人综合 | 伊人国产在线视频| 亚洲欧洲色图| 97久久精品人人澡人人爽缅北| 国产xxxx在线观看| 综合电影一区二区三区 | 亚洲欧洲另类| 99影视tv| 最新国产露脸在线观看| 欧美日韩大陆一区二区| 国产精品成人在线视频| 久久男女视频| 欧美日韩综合网| 日本成人三级电影| 亚洲日本成人女熟在线观看 | 亚洲全部视频| 粉嫩av一区二区三区免费观看| 激情在线小视频| 在线综合+亚洲+欧美中文字幕| 人妻熟人中文字幕一区二区| 日韩av中文在线观看| 日本中文不卡| 久久久加勒比| 久久艳片www.17c.com| 亚洲天堂久久久久| 久久久久亚洲蜜桃| 99在线观看视频免费| 136福利精品导航| 久久久日本电影| 日日躁夜夜躁白天躁晚上躁91| 亚洲国产一区二区三区| 国产极品一区二区| 久久午夜av| 手机看片福利永久国产日韩| 懂色aⅴ精品一区二区三区| 深夜福利亚洲导航| 国产女18毛片多18精品| 亚洲线精品一区二区三区 | 一区二区三区国产好| 九九视频这里只有精品 | 精品久久久久久久久久久久包黑料| 久久久久久久麻豆| 国产99久久久国产精品潘金| 每日在线观看av| 久操成人av| 国产精品露脸av在线| 国产精品实拍| 亚洲精品一区二区三区在线观看 | 疯狂欧美牲乱大交777| 色欲AV无码精品一区二区久久 | av资源久久| 96精品久久久久中文字幕| sm在线播放| 国产一区二区三区四区福利| 国产精品久久久久久久免费| 亚洲国产视频在线| 免费看黄色的视频| 国产剧情一区二区三区| 国产一区二区在线视频播放| 日韩精品二区| 国产精品久久一区二区三区| 国产精品伦理| 久久午夜a级毛片| 欧美一区二区三区成人片在线| 欧美综合欧美视频| 小嫩苞一区二区三区| www.欧美色图| 手机av在线免费| 亚洲精品日本| 日韩视频在线观看视频| 国产成人调教视频在线观看 | 91小视频在线播放| 丝袜美腿亚洲一区二区图片| 精品无码一区二区三区在线| 中国精品18videos性欧美| 亚洲午夜精品久久久久久浪潮| 亚洲激情播播| 精品国产一区二区三区久久久久久| 高清一区二区中文字幕| 国产精品视频久久久| 日韩性xxx| 欧美专区日韩视频| 成年女人在线看片| 久久久久久久久91| 青青草原av在线| 欧美成aaa人片免费看| 欧美被日视频| 中文字幕亚洲欧美一区二区三区 | 国产精品久久久久永久免费观看| 一区二区精品免费| 久久免费视频一区| 欧美色图亚洲激情| 91麻豆视频网站| 18禁裸乳无遮挡啪啪无码免费| 99久久综合狠狠综合久久| 精品无码av一区二区三区| 国产一区二区三区在线看麻豆 | 黄色一级片中国| 亚洲免费观看高清| 538精品在线观看| 一区二区三区久久久| 国产精品23p| 午夜激情久久久| 毛片在线免费视频| 高跟丝袜一区二区三区| 五月天婷婷导航| 91国模大尺度私拍在线视频| 最好看的日本字幕mv视频大全| 91久久精品网| 又污又黄的网站| 欧美电影一区二区三区| 99在线观看免费| 亚洲精品一区二区精华| 五十路在线观看| 亚洲色图色老头| 日本在线人成| 九色精品美女在线| 国产高潮在线| 国产999在线观看| 精品国产美女a久久9999| 亚洲自拍中文字幕| 极品国产人妖chinesets亚洲人妖| 国产精品久久久久久久天堂第1集 国产精品久久久久久久免费大片 国产精品久久久久久久久婷婷 | 国内精品视频在线| 中文字幕乱码在线播放| 国产精品狠色婷| 国产日韩在线观看视频| 国产成人亚洲欧美| 欧美猛男男男激情videos| 亚洲人成人77777线观看| 亚洲理论电影网| 欧洲黄色一级视频| 久久精品免费观看| 国产女人18毛片水真多18| 久久久久久久久99精品| 视频国产一区二区| 亚洲成人第一页| 亚洲午夜激情视频| 精品国产乱码久久久久久牛牛| 欧美日韩国产中文字幕在线| 久久精品青青大伊人av| 九色porny自拍视频在线观看 | 懂色av一区二区| 日产中文字幕在线精品一区 | 欧美激情啊啊啊| 日本免费久久| 成人在线资源网址| 欧美日韩在线观看视频小说| 国产一线二线三线女| 免费视频最近日韩| 香港三日本8a三级少妇三级99| 国产午夜精品一区二区三区视频| 久操视频免费在线观看| 在线视频国内自拍亚洲视频| 免费国产精品视频| 色婷婷综合久久久久中文字幕1| 青青草原av在线| 国产精品无码专区在线观看| 欧美在线关看| 国产精品免费看久久久无码| 日韩av在线发布| 美女黄色一级视频| 亚洲色图欧美偷拍| 波多野结衣在线观看视频| 欧美va日韩va| 老司机av在线免费看| 国产精品99导航| 日韩免费电影在线观看| 欧美一二三不卡| 久久精品国产亚洲高清剧情介绍| 在线 丝袜 欧美 日韩 制服| 亚洲一区二区在线视频| 国产精品久久久久久久久久久久久久久久久久 | 日本啊v在线| 久久久亚洲影院你懂的| 国产精品一区三区在线观看| 亚洲成人18| 三级在线观看一区二区| 日本三级日本三级日本三级极| 亚洲欧美一区二区久久| 91精品国产综合久| 中文字幕在线成人| 成人自拍视频网| 日产精品一线二线三线芒果| 美女精品在线| 国产偷人妻精品一区| 天涯成人国产亚洲精品一区av| 精品国产av一区二区三区| 欧美成人免费在线观看| 成人av在线播放| 日本三级中文字幕在线观看| 极品少妇xxxx精品少妇| 911国产在线| 91精品综合久久久久久| 国产乱色在线观看| 96国产粉嫩美女| 国产精品v日韩精品v欧美精品网站| 黄色三级视频在线播放| 中文字幕亚洲精品在线观看| 亚洲一级av毛片| 久久九九热免费视频| www.久久爱.com| 91国在线高清视频| 成人美女视频在线观看18| 国产真人真事毛片| 日韩av网址在线| 成人免费影院| 亚洲激情一区二区| 极品尤物av久久免费看| 懂色av懂色av粉嫩av| 精品久久人人做人人爰| freexxx性亚洲精品| 久久国产精品一区二区三区四区 | 香蕉视频免费网站| 午夜精品影院在线观看| 色视频在线观看| 国产精品老女人精品视频| 91精品精品| 扒开伸进免费视频| 色综合网色综合| 在线观看h片| 成人精品水蜜桃| 美女视频一区免费观看| 精品视频第一页| 日韩视频永久免费| 超碰aⅴ人人做人人爽欧美| 亚洲欧美丝袜| 成人免费毛片a| 中文字幕免费高清网站| 久久色在线播放| 特黄特色欧美大片| 女人高潮一级片| 午夜a成v人精品| 欧美精品电影| 国产在线观看一区| 开心九九激情九九欧美日韩精美视频电影| 动漫性做爰视频| 日韩精品视频三区| 亚洲欧美在线综合| 免费在线观看亚洲视频| 中文字幕av免费专区久久| 二区三区在线视频| 国产精品久久久久7777婷婷| 午夜日韩激情| 久久久久亚洲av成人无码电影| 欧美一区二区成人| 日韩高清在线| 日本阿v视频在线观看| 国产亚洲综合在线| 蜜臀av在线观看| 国产日韩在线亚洲字幕中文| 国产视频欧美| 欧美日韩精品在线观看视频| 国产亚洲精品综合一区91| 1313精品午夜理伦电影|