国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

LeetCode題解之有效的括號(棧)

開發 前端
棧是什么,很金典的比喻就是把 棧 比喻成疊盤子,一個個疊上去,然后拿的時候會先拿最上面的,也就是最后疊上去的那個。

[[384434]]

前言

說完了鏈表,我們再看看棧。

理解棧

棧是什么,很金典的比喻就是把 棧 比喻成疊盤子,一個個疊上去,然后拿的時候會先拿最上面的,也就是最后疊上去的那個。

先進者后出、后進者先出,這就是棧結構。

實際應用

那么棧在實際應用中有什么場景呢?

可太多了,比如Activity中的任務棧,編譯器實現方法表達式,瀏覽器的前進后退。

這里拿瀏覽器的前進后退做例子。

  • 在瀏覽器中,每打開一個頁面,就把這個頁面入棧,然后點擊后退的時候就將頁面出棧。這是不是挺像Activity頁面的任務棧的。
  • 如果有前進功能,那么就再需要一個棧,當點擊后退的時候,就把頁面從A棧出,然后進入B棧,這樣點擊前進的時候,就能從B棧重新回到A棧了。

1)瀏覽網頁,每打開一個網頁就入棧A。比如這里打開了網頁M和網頁N。

 

2)點擊后退,網頁N出棧A,入棧B。

 

3)點擊前進,網頁N出棧B,入棧A。

 

Java中的棧類

在Java中,棧的對應類為Stack。

  1. //初始化棧 
  2. Stack<String> stack =new Stack<String>(); 
  3.  
  4. //入棧 
  5. stack.push("test"); 
  6.  
  7. //出棧,返回出棧的元素 
  8. String str=stack.pop(); 

算法題

還是老樣子,來一題棧相關的算法題。

題目

給定一個只包括 '(',')','{','}','[',']' 的字符串 s ,判斷字符串是否有效。

有效字符串需滿足:

左括號必須用相同類型的右括號閉合。左括號必須以正確的順序閉合。

示例 1:輸入:s = "()" 輸出:true

示例 2:輸入:s = "()[]{}" 輸出:true

示例 4:輸入:s = "([)]" 輸出:false

示例 5:輸入:s = "{[]}" 輸出:true

解法

解法就是利用棧了。

遇到左括號入棧,遇到右括號就把相應的左括號出棧,如果右括號和要出棧的這個元素不一致,就說明括號沒有成對。

關于左括號和右括號的對應關系,可以用HashMap來存儲,來一起看看:

  1. public boolean isValid(String s) { 
  2.         int n = s.length(); 
  3.         if (n % 2 == 1) { 
  4.             return false
  5.         } 
  6.  
  7.         Map<CharacterCharacter> pairs = new HashMap<CharacterCharacter>() {{ 
  8.             put(')''('); 
  9.             put(']''['); 
  10.             put('}''{'); 
  11.         }}; 
  12.         Deque<Character> stack = new LinkedList<Character>(); 
  13.         for (int i = 0; i < n; i++) { 
  14.             char ch = s.charAt(i); 
  15.             if (pairs.containsKey(ch)) { 
  16.                 if (stack.isEmpty() || stack.peek() != pairs.get(ch)) { 
  17.                     return false
  18.                 } 
  19.                 stack.pop(); 
  20.             } else { 
  21.                 stack.push(ch); 
  22.             } 
  23.         } 
  24.         return stack.isEmpty(); 
  25.     } 

也有比較靈活的辦法,就是入棧的時候就確定好括號的對應關系,直接入棧左括號對應的右括號。

  1. public boolean isValid(String s) { 
  2.         if(s.isEmpty()) 
  3.             return true
  4.         Stack<Character> stack=new Stack<Character>(); 
  5.         for(char c:s.toCharArray()){ 
  6.             if(c=='('
  7.                 stack.push(')'); 
  8.             else if(c=='{'
  9.                 stack.push('}'); 
  10.             else if(c=='['
  11.                 stack.push(']'); 
  12.             else if(stack.empty()||c!=stack.pop()) 
  13.                 return false
  14.         } 
  15.         if(stack.empty()) 
  16.             return true
  17.         return false
  18.     } 

時間復雜度

需要遍歷字符串,所以時間復雜度為 O(n)

空間復雜度

棧的字符數量最大為n,Map數量為3,所以空間復雜度就是O(n)

參考

https://time.geekbang.org/column/article/41222

本文轉載自微信公眾號「碼上積木」,可以通過以下二維碼關注。轉載本文請聯系碼上積木公眾號。

 

責任編輯:武曉燕 來源: 碼上積木
相關推薦

2022-01-19 09:01:28

字符串LeetCode

2010-09-10 13:24:21

DIV表格

2010-08-23 10:04:48

CSS浮動

2010-03-23 16:41:17

云計算

2021-08-30 14:34:10

有效算法字符

2021-10-19 10:18:56

欺詐管理技術前線初創公司

2010-07-06 11:44:49

UML活動圖

2010-07-23 16:10:34

Perl用戶函數

2010-05-25 14:42:58

刪除SVN版本信息

2015-03-16 11:16:59

生物識別身份驗證數據中心

2010-07-19 15:07:23

SQL Server評

2015-03-03 09:13:22

2010-07-06 13:11:50

Visio畫UML圖

2010-08-26 09:27:07

CSS居中

2009-07-25 17:24:25

VMware服務器虛擬機

2010-09-25 10:06:40

jvm.cfg

2010-07-29 10:09:09

Flex數據庫

2010-08-30 11:22:24

DIVCSS

2010-08-06 09:28:53

Flex頁面跳轉

2010-11-25 10:42:34

上網行為管理產品網康
點贊
收藏

51CTO技術棧公眾號

精品国产乱码久久久久久图片 | 一区二区高清| 亚洲人一区二区| 精品福利一区| 欧美小视频在线观看| 僵尸世界大战2 在线播放| 久久免费大视频| 中文字幕无线精品亚洲乱码一区 | 91精品国产91久久久久麻豆 主演| 久久中文字幕一区二区三区| 涩涩视频免费网站| 亚洲国产va精品久久久不卡综合| 你懂的视频在线免费| 精品国产乱码久久久久久老虎 | 激情成人开心网| 成人黄色777网| 免费的很黄很污的视频网站| 在线一区二区三区四区| 99久久精品一区二区成人| 中文字幕欧美视频在线| 激情亚洲小说| 国产精品第一第二| 国产精品日韩精品欧美精品| 久久久久久久久久久久久国产| 久久中文娱乐网| 久久久久久久久免费视频| 一区二区福利视频| 伊人久久综合| 日本黄大片一区二区三区| 欧美人与性动xxxx| 一级毛片视频在线观看| 国产精品国产三级国产aⅴ原创| 午夜免费福利在线| 国产精品美女久久久久久2018| 国产一区免费观看| 日韩中文字幕在线一区| 中文字幕av一区中文字幕天堂| 国内精品偷拍| 日韩免费av电影| 亚洲视频你懂的| 国产伦理精品| 久久国产色av| 深夜日韩欧美| 最好看的2019的中文字幕视频| 亚洲wwwww| 一本色道久久综合亚洲91| 伊人色综合影院| 在线观看视频免费一区二区三区| 国产日韩精品电影| 欧美7777| 中文字幕av一区二区三区谷原希美| 91国拍精品国产粉嫩亚洲一区| 日韩av影片在线观看| 91av中文字幕| 99久久精品国产精品久久| 杨幂一区欧美专区| 精一区二区三区| 日韩伦理在线免费观看| 日本中文一区二区三区| 日韩少妇内射免费播放| 成人少妇影院yyyy| 欧美一区观看| 久久成人麻豆午夜电影| 亚洲国产精品一区在线观看不卡 | 国产精品欧美久久| 999国产精品999久久久久久| 国产97人人超碰caoprom| 欧美理论影院| 中文字幕日韩av| 国产成人亚洲一区二区三区| 国产高清一区视频| 91精品黄色片免费大全| 亚洲欧洲一区| av午夜在线观看| 青青在线免费观看| 午夜电影网一区| 日韩影院在线| 日韩不卡av| 亚洲成人网在线| 国产亚洲一区在线| 热久久最新网址| 亚洲黄色av| 国产成人a亚洲精v品无码| 亚洲人成7777| 欧美大片在线播放| 亚洲午夜日本在线观看| av小片在线| 欧美精品一区二区三区久久久 | 人人鲁人人莫人人爱精品| 精品国产一区二区三区久久| 国产一区二区三区久久久| 黄色影院在线看| 日产精品久久久久久久蜜臀| 日韩在线播放av| 国产三区在线成人av| 国产精品巨作av| av中文天堂在线| 最近看过的日韩成人| 在线观看视频亚洲| 国产精品久久久久久久久免费相片 | 欧美极品aⅴ影院| 国产精品入口芒果| 欧美激情中文不卡| 亚洲欧美自拍另类日韩| 色94色欧美sute亚洲线路二| 国产白丝在线观看| 国产精品亚洲аv天堂网| 美女精品一区| 999精品网站| 日韩视频精品在线| 激情亚洲成人| 毛片毛片毛片毛片毛片毛片毛片毛片毛片| 国产视频在线一区二区| 26uuu欧美| 136国产福利精品导航网址| 电影k8一区二区三区久久| 91av免费看| 久久中文字幕在线视频| 亚洲一区中文在线| 国产精品羞羞答答xxdd| 成人在线免费小视频| av网站在线免费看推荐| 美女网站色免费| 国产一区二区三区四区五区在线 | 国产成人精品一区二区| 久久午夜色播影院免费高清| 最新国产精品久久久| 欧美日一区二区三区| 九色视频在线播放| 国产免费裸体视频| 日韩精品无码一区二区三区| 国产91视觉| 成人欧美一区二区三区在线湿哒哒| 亚洲色图综合网| 欧美一区二区在线不卡| 亚洲大尺度视频在线观看| 午夜在线一区| 亚洲国产激情| 美女呻吟一区| 久久野战av| 欧美日韩女优| 日韩av视屏| 99热在线观看| 97超碰青青草| 国产v片免费观看| aⅴ在线免费观看| 青春草国产视频| 欧美日韩一道本| 韩国日本在线视频| 欧美高清xxxxxkkkkk| 深夜福利视频一区| a视频在线看| 天天av综合网| 免费观看一二区视频网站| 91成人综合网| 国产又大又黄又粗的视频| 男人天堂网视频| igao视频网在线视频| 肥女人的一级毛片| 四虎影视在线观看2413| 久久综合之合合综合久久| 欧美日本三级| 正义之心1992免费观看全集完整版| 日韩一级片在线观看| 精品无人国产偷自产在线| 中文字幕av一区| 91精品在线看| 日韩精品av一区二区三区| 国产中文字幕在线免费观看| 一区二区三区|亚洲午夜| 成人毛片一区二区| 欧美日韩欧美| 日韩中文字幕| 免费在线看一区| 午夜精品福利一区二区三区蜜桃| 亚洲国产另类 国产精品国产免费| 日韩在线观看av| 成人av免费电影| 哪个网站能看毛片| 色视频在线看| 久久久久久久久久久久电影| 久久精品青草| 国产91精品欧美| 亚洲一区二三区| 欧美精品中文字幕一区| 国产精品电影久久久久电影网| 日韩av手机在线看| 国产成人精品日本亚洲11| 大陆极品少妇内射aaaaa| 国产精品实拍| 欧美日本精品| 亚洲成a人片综合在线| 欧美性受xxx| 濑亚美莉vs黑人在线观看| 久久青青视频| 免费看的黄色欧美网站| 在线看国产一区| 久久99精品久久久久久三级| h色视频在线观看| 欧美精品三级|