這是我每天堅持刷算法題的倉庫,每天刷1-3道,時間30-40min,加油!
目前考慮leetcode+洛谷形式,c++和python3語言,leetcode主要學核心思想,洛谷學會輸入輸出格式
每日打卡:markdown+csdn打卡
刷題策略:
- 按分類刷;每個分類從 Easy 到 Medium 順序刷;
- 優先刷題號靠前的題目;
- 優先刷點贊較多的題目;
大體路線方向由簡入難
- 數學
- 數組
- 鏈表
- 字符串
- 哈希表
- 雙指針
- 遞歸
- 棧
- 隊列
- 樹
- 圖與回溯算法
- 貪心
- 動態規劃
數組-> 鏈表-> 哈希表->字符串->棧與隊列->樹->回溯->貪心->動態規劃->圖論->高級數據結構,再從簡單刷起,做了幾個類型題目之后,再慢慢做中等題目、困難題目。
刷題技巧
1
建議刷題的時候分成四輪來刷,不用想著第一次就把單個分類的全部刷完。
第一輪:
按照 數學 > 數組 > 鏈表 > 字符串 > 哈希表 > 雙指針 > 遞歸 >棧 >隊列 的順序,主要刷:難度簡單,通過率在 50%以上的題目。
第二輪:
按照 數學 > 數組 > 鏈表 > 字符串 > 哈希表 > 雙指針 > 遞歸 >棧 >隊列的順序,主要刷:難度中等,通過率在50%以上的題目
第三輪:
先不要急著刷題,建議找個視頻,把相關算法理論看一遍,比如:什么是分治,什么是貪心,什么是動態規劃,什么是二叉搜索樹,什么是圖等概念。
再把樹 > 圖與回溯算法 >貪心 >動態規劃這些刷一遍,刷的時候還是刷簡單或者中通過率 50%以上的題目
第四輪:
第四輪就比較難了,可以刷剩余困難的,還有以前沒刷的,通過率低于 40%的題目。但是這一輪會非常的難,難以堅持下去。
1
(1)首先,復習數據結構與算法基礎知識,形成完整的算法知識體系,最基本的數據結構,例如鏈表,隊列,棧,二叉樹等至少要先熟練掌握;
(2)接著刷LeetCode前100題,前100題是最為常見的題目,據說刷算法題0-100題是第一道坎,100-300題是第二道坎,那么度過第一道坎就可以讓我們對算法題目有基本的認識,慢慢找到做題的感覺和思路,并擁有一定的做題能力,可以按照鏈表/二叉樹/遞歸等這些標簽來刷;
(3)然后就是算法能力提升階段,要根據專題進行專項訓練,掌握不同的解決問題的方法,并能夠針對具體類別的問題產生相應的解題思路,可以參考下邊專項刷題路線資料分享;
(4)最后就是進一步提高階段,可以采用亂序刷題的方式,可以刷各種面經和高頻題,推薦書籍《劍指offer》,這一階段重在鍛煉在面對不同問題的時候,能夠選擇最為合適的數據結構和算法,進一步加深對于算法的理解,同時拓展常用的算法思想,建立自己的理解。同時學習各種各樣的解題技巧和思路,也要學習相關的數學知識。
三大步驟:
(1)分析題目屬于哪一類題目,大概用到什么數據結構算法,是數組、鏈表、圖、樹?還是用遞歸動態規劃這些方法。常見的算法題目一般只涉及到這幾個方面。
(2)驗證分析階段的思路。注意常見錯誤:變量名寫錯,邊界條件考慮不周。如果調試階段超過寫代碼的30%時間,說明思考過程,方案設計很有問題。先反思分析設計方案除了什么錯誤,思考的不夠系統嗎?不要一邊寫,一邊改方案,這樣效率太低,而且你會逐漸適應低效率的節奏,這個負面影響太大。
(3)作總結,總結很重要。如果沒做出來,反思什么階段犯了錯誤。如果做出來了,思考解題的關鍵點是什么,總結題目特點,一定要總結這個題目屬于哪一種類型,這個題目在這個類型中特點是什么,和其他這個類型的其他題目區別在哪里。只有經過總結,做過的題目才會真正進入你解題思維的一部分,解題能力的一部分。
借鑒書籍和博客
LeetCode 101 - A Grinding Guide.pdf
《算法(第4版)》
《STL源碼剖析》
代碼隨想錄
LeetBook - 力扣(LeetCode)全球極客摯愛的技術成長平臺
題單廣場 - 洛谷 | 計算機科學教育新生態
能力全面提升綜合題單 - 題單 - 洛谷 | 計算機科學教育新生態(較難)
推薦的博客作者有:
負雪明燭:5 年在 CSDN 上更新了 800多道題解,收獲 160萬 閱讀。在中文力扣日更題解。
李威威:中文力扣的大 V,對力扣題目掌握很全面,寫得題解非常詳細,對題目舉一反三。
花花醬:基本每個題都有博客和視頻,強烈推薦看他的視頻。
Grandyang:在博客園更新了幾乎所有力扣題目,收獲了 1200萬 閱讀。
題號
數學相關算法題
2469、2235、2413、2160、2520、1688、1281、2427、728、2119、509、70、
372、7、479、564、231、342、326、504、263、190、191、476、461、477、50、:693、393、172、458、258、319、405、171、168、670、233、357、400
數組相關算法題
2011、1929、1720、2574、1cp01、lcp06、1365、1732、1464、2496、1979、485、495、414、628、645、697、448、442、41、274、453、665、283、118、119、661、598、419、189、396、54、59、498、566、48、73、289、303、304、238
三,鏈表相關算法題
206、203、237、19、430、61、24、、92、25、2、445、21、23
四,字符串
520、125、14、34、58、344、541、557、151、387、389、383、242、49、451、3、、8…13、22、293、3、不8、32、824、號2、83、86、 7、218. 43、 306423、657、551、696、482、6、68、28、686、459、214、5、647
五,哈希表
633、349、128、202、500、290、532、205、166、466、138、1、167、599、219.217、220350、554、609、454、18、560、523、525、594、
六,雙指針
345、680、167、15、16、18、11、42、27、26、80、83、82、611、187643、674、209、3、438、567、424、76、30、86、328、160、88、475、141、142、143234、457、287
七,遞歸
682、71、388、150、227、224、20、636、591、32
九,隊列
933、1700、232、225、2073、387
十,樹
100、222、101、226、437、563、617、508、572、543、654、687、87102、429、690、559、662、671、513、515、637、103、107、257、623、653、104、111、112、113、129、404、199、655、116、117、144、589、606、331、652、297、449
145、590、94、700、530、538、230、98、173、669、450、110、95、108、109、105、106114、235、236、501、99、558、427
十一,圖與回溯算法
565、17、397、526、401、36、37、51、52、77、39、216、40、46、47、31、556、60、491、78、90、79、93、332
241、282、679、22、301、488、133、200、695、463、542、130、417、529、127、126433、675
547、684、685、399、207、210、65、468
十二,貪心
605、121、122、561、455、575、135、409、621、179、56、57、228、452、435、646、406、
48、169、215、75、324、517、649、678、420、53、134、581、152、334、376、659、 343496、503、456、316、402、321、84、85
十三,動態規劃
509、70、338、45、55、198、213、650、91、639、552、123、188、309、32、264、313、403
689、413、446、368、416、279、322、518、474、494、377、62、63、64、120、576、688、221、629、174、96、329、583、72、97、115、516、132、131、139、140、514、10、44
464、691、698、638、473、486、664、375、312、546、337、124、233、600
刷完 900 多道算法題的首次總結:LeetCode 應該怎么刷?_leetcode刷題-CSDN博客
算法刷題路線總結與相關資料分享_刷題算法學習流程-CSDN博客
【LeetCode】力扣刷題攻略路線推薦!適合新手小白入門~(含各類題目序號)_力扣刷題順序-CSDN博客
【LeetCode】代碼模板,刷題必會_leetcode 代碼模版-CSDN博客