LeetCode專項刷題順序:棧

2020-08-08 數據藝術家

我通過對LeetCode中「棧」部分的免費題目進行歸類、整理,歸納出如下推薦的刷題順序。在刷題順序的整理中,我主要遵循了如下規則:

  • 在題目分組方面,除綜合題外,每組題目的技巧、方法均相似,方便統一學習;
  • 在各組題目的順序方面,總體來說為由易到難,後一組題目比前一組略難一些,方便大家循序漸進;
  • 在每組題目的順序方面,均為由易到難(難度為我依據自己的理解,對LeetCode給出的難度進行微調的結果),方便大家循序漸進。

LeetCode棧部分刷題順序

第1組:棧的設計

  • 0155:【簡單】設計能夠在常數時間內檢索到最小元素的棧
  • 0225:【簡單】用隊列實現棧
  • 0232:【簡單】用棧實現隊列
  • 1381:【中等】設計一個支持增量操作的棧
  • 0895:【困難】pop返回棧中最靠近棧頂的最大頻率值的棧

第3組:棧的基本操作

  • 0682:【簡單】棒球比賽計分
  • 1441:【簡單】生成用棧構建指定數組的棧操作列表
  • 0856:【簡單】依據指定規則計算平衡括號字符串的分數
  • 1190:【中等】反轉字符串中每對括號間的子串
  • 0150:【中等】逆波蘭表達式求值
  • 0636:【中等】計算函數在CPU中的獨佔時間
  • 0735:【中等】直線上的不同質量的行星碰撞
  • 0946:【中等】依據push和pop序列驗證是否可能是空棧操作的結果
  • 0402:【中等】移除掉K位數字使剩餘數字組成的整數最小

第3組:棧用於樹的遍歷

  • 0094:【中等】實現二叉樹的中序遍歷
  • 0144:【中等】實現二叉樹的前序遍歷
  • 0145:【困難】實現二叉樹的後序遍歷
  • 0173:【中等】設計二叉搜索樹的迭代器
  • 0341:【中等】設計扁平化嵌套列表迭代器

第4組:棧用於處理字符串

  • 0020:【簡單】判斷字符串中的括號是否匹配
  • 0844:【簡單】比較包含退格字符的字符串
  • 1047:【簡單】刪除字符串中的所有相鄰重複項直至沒有相鄰重複項
  • 0071:【中等】簡化Unix文件的絕對路徑
  • 0921:【中等】使字符串括號有效最少需要添加多少個括號
  • 1003:【中等】檢查字符串是否由指定字符串拼接產生
  • 1209:【中等】刪除字符串中的所有相鄰定長重複項
  • 1249:【中等】移除字符串中最少的無效括號使剩餘的括號成對
  • 0394:【中等】包含倍數信息的字符串解碼
  • 0726:【困難】統計化學表達式中各個原子的數量
  • 0591:【困難】DOM標籤合法性驗證檢查器

第5組:單調棧解法

  • 0496:【簡單】尋找列表中的下一個更大元素
  • 0503:【中等】循環尋找列表中的下一個更大元素
  • 0739:【中等】計算想要觀測到更高氣溫所需等待的天數
  • 0901:【中等】計算股票價格跨度(今日前連續小於或等於今日價格天數)
  • 1019:【中等】生成鍊表中的下一個更大結點的列表
  • 0456:【中等】判斷列表中是否有1-3-2模式的子序列
  • 0907:【中等】計算數組的所有子數組的最小值之和
  • 1124:【中等】大於特定值的項數超過小於特定值項數的最長連續子串
  • 1130:【中等】中序遍歷的葉值的最小代價生成樹
  • 0042:【困難】根據柱子的高度列表,計算下雨後能接多少雨水
  • 0084:【困難】根據柱狀圖高度列表,計算柱狀圖中最大的矩形
  • 0085:【困難】根據二維二進位矩陣,找出只包含1的最大矩形

第6組:應用題

  • 0224:【困難】帶括號的正負二則計算器實現
  • 0316:【困難】去除字符串中的重複字母並保證返回結果的字典序最小
  • 0975:【困難】數組裡的奇偶跳遊戲
  • 0770:【困難】處理未知數的多項式計算器

相關焦點

  • leetcode刷題最強指南(版本1.0)
    為什麼會有這篇刷題指南很多剛開始刷題的同學都有一個困惑:面對leetcode上近兩千道題目,從何刷起
  • LeetCode按照怎樣的順序來刷題比較好?
    分享一下身邊大神的刷題順序:如果你時間比較緊迫,為了找工作而刷題,我建議你先刷熱門推薦,一共兩百多道題。先刷熱題 HOT 100,再刷精選 TOP 面試題,之後刷其他的題。如果你時間比較充裕,那我建議你:按從低到高的難度分組刷按 tag 分類刷定期複習,重做之前刷過的題掌握 LeetCode 刷題方法再開始刷題,屬於磨刀不誤砍柴工。
  • 在IDE中刷LeetCode,刷題效率直線up!
    第一份乾貨來自網友在GitHub上分享的一份教程:在IDE中刷題,讓編碼調試一體化。插件及使用的程式語言,然後點擊力扣圖標,就能在菜單中選擇題目開始刷題了。你可能還想要一個刷題攻略除了強大的工具外,一份好用的刷題攻略也必不可少。GitHub上有網友分享出了自己總結的一套算法模板,並且他靠著這份模板刷題,成功拿到了字節跳動的offer!其中的關鍵就是作者總結了一套練習題,他把題目類型進行了劃分、並對基礎知識點進行了講解,刷一遍練習題後再上手LeetCode,知識點掌握地會更加牢固。
  • leetcode 刷500道題,筆試/面試穩嗎?
    如果我在 leetcode 堅持刷它個 500 道題,以後筆試/面試穩嗎?這裡我說下我的個人看法,我認為不穩。下面說說為啥不穩以及算法題應該如何刷、如何學才比較好,當然,也會推薦自己學過的資料。一、先說說筆試題在刷 leetcode 的時候,你會發現,每道題的題意都很短,你只需要花十幾秒的時間,就知道這道題是要你幹嘛了,並且每道題所用道的算法思想都很明確,動態規劃、遞歸、二分查找等,你可能很快就知道該用哪種方法,只是你不懂如何把代碼寫出來而已。
  • 順序棧與鏈式棧的圖解與實現
    ,棧既然是線性表那麼就存在表頭和表尾,不過在棧結構中,對其都進行限制改造,表尾用來輸入數據也叫做棧頂(top),相應的 表頭就是棧底(bottom),棧頂和棧頂是兩個指針用來表示這個棧與線性表類似,棧也是又順序表示和鏈式表示,分別稱作順序棧和鏈棧棧的基本操作
  • 【SQL刷題系列】:leetcode180 Consecutive Numbers
    點擊上方 ↑ 藍色關注「Python數據科學」SQL刷題系列:SQL作為一種資料庫查詢和程序設計語言,是從事數據技術人員必備的技能,也是各大公司的數據分析、數據挖掘、資料庫等筆試題必考的一種題。為此,Python數據科學開啟了SQL刷題的系列,希望可以幫助有需要的朋友們。
  • JS刷題之路-棧 和我一起系統的刷題吧
    stack.pop();        }else{            stack.push(cur);//否則加入        }    }    return stack.length;};前置知識(四五題的)首先什麼是單調棧顧名思義單調棧就是維護一個單調遞減或遞增的棧;
  • 春節大禮包|刷題技巧+80道Leetcode
    為了跳槽,我前兩年的春節都是在刷題中度過的,目前為止刷了小四百道leetcode,也算是有一些經驗,今天就跟大家分享下學習方法和我總結的乾貨。後來發現了 Leetbook[1] 這個寶藏,才算是找到了適合自己的刷題方法。
  • LeetCode刷題第三周【數組(簡單)】
    日期Oct.28 - Nov.03 2020(每日一題)Ps:本周我們接著上一周繼續刷數組,難度依舊是簡單,題目不再按順序,而是隨機挑選,下周開始會加深難度。隨著學校的開課,我會將平時上課的內容和筆記也整理成MK的格式上傳。
  • leetcode專項刷題(數組)-兩數之和/訪問所有點最小時間/種花問題
    本文將繼續分享leetcode上數組專項的刷題,也是基礎題,但是屬於必須會的那種範疇。接下來應該還有最後一篇關於基礎數組專項的分享,給自己留個底。算法都是基於python。必須按照數組中出現的順序來訪問這些點。
  • leetcode刷對了麼
    今天,逆行君就帶你從世界觀和方法論兩方面走進「leetcode」 leetcode之世界觀 什麼是leetcode 簡單來說,leetcode是一個美國的在線編程網站,它收集了各大公司的經典算法面試題,用戶可以選擇不同的語言進行代碼的在線編寫、編譯和調試。
  • leetcode 刷500道題,筆試/面試穩嗎?別以為你自己穩了
    來源公眾號:苦逼的碼農作者:帥地想要學習算法、應付筆試或者應付面試手撕算法題,相信大部分人都會去刷 Leetcode,有讀者問?如果我在 leetcode 堅持刷它個 500 道題,以後筆試/面試穩嗎?
  • 如何科學的刷 Leetcode
    它是一個編程實踐網站,主要注重於培養使用者的編程技巧,去解決一些巧妙的算法題。這是它的官網,https://leetcode.com。Leetcode 官網很久以前,還是在大學的時候,有師兄對我意味深長的說,如果把 Leetcode 上面的題目做上七遍,就有很大概率能夠通過谷歌的面試。
  • 帶你狂刷算法Leetcode題!短時間內快速獲得實戰能力!
    但對於初學者來說,很容易沉迷在刷題的數量中,覺得如果能刷完這1000道題,自己一定能夠有所飛躍。但實際上,低效率的重複對你來說,根本就無法掌握到解題的精髓,一旦題目有所變動,就無法舉一反三。那究竟應該怎麼刷題才高效呢?
  • Leetcode刷題-鍊表
    為了符合大多數人的習慣,本題從1開始計數,即鍊表的尾節點是倒數第1個節點。例如,一個鍊表有6個節點,從頭節點開始,它們的值依次是1、2、3、4、5、6。這個鍊表的倒數第3個節點是值為4的節點。遞歸過程:比較兩鍊表頭結點數值的大小,選取小的那個,令其指向其本來的next和另一個鍊表的合併鍊表頭結點 遞歸邊界:如果有一個列表為空,那麼遞歸結束返回不空的列表令n,m為兩個鍊表的長度,時間複雜度O(n+m),空間複雜度O(n+m),遞歸調用需要消耗棧空間
  • C#刷遍Leetcode面試題系列連載(1) - 入門與工具簡介
    刷LeetCode有哪些好處?計算機中有很多抽象的數據結構,比如: List、Stack(棧)、Linked List(鍊表)、Hash Table(哈希表)、Heap(堆)、Tree等等,而LeetCode 上的大量高質量算法題基本上涵蓋了所有這些數據結構的應用。怎麼將這些題抽象成數學模型,轉化為具體數據結構的應用,則是我們需要提升的地方,而這恰恰幫我們極大地提升了自己的抽象思維水平。
  • 字節大佬Leetcode刷題筆記,看完吊打問你算法的面試官
    介紹leetcode 題解,記錄自己的 leetcode 解題之路。目前分為五個部分:第一個部分是 leetcode 經典題目的解析,包括思路,關鍵點和具體的代碼實現。第二部分是對於數據結構與算法的總結第三部分是 anki 卡片, 將 leetcode 題目按照一定的方式記錄在 anki 中,方便大家記憶。
  • leetcode如何刷題?(參考)
    也歡迎正閱讀的你,可以給我一些你的經驗、想法、建議,可以在底部評論給我,或者私人微信告訴我~1、建議未刷過題的人按著順序來。
  • leetcode刷題指南之RussianDollEnvelopes
    j].second)15                dp[i]=max(dp[i],dp[j]+1);16    int ans=0;17    for(int i=0;i<n;i++)18        ans=max(ans,dp[i]);19    return ans;20}21};推薦閱讀:leetcode
  • C#刷遍Leetcode面試題系列連載(2): No.38 - 報數
    前言前文傳送門:C#