这是我每天坚持刷算法题的仓库,每天刷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博客