刷满500道LeetCode题目要花多久

刷满500道LeetCode题目要花多久

不宜太久

主要还是看自己掌握程度,我见过刷200题就上岸的,也见过刷1000题面试答不上来的,所以刷题就刷题,别关乎时间,别给自己设限。

然后,分阶段,根据不同侧重点去刷题,不管对找工还是学习,都有用。

一、初学阶段:

连续刷题1-2周,大概刷个50题左右,先去了解算法与数据结构(比如双指针,哈希,链表,字符串)的应用。

在这个阶段,你可能会觉得很难受,没有方向也没动力,这时候你需要多看多抄别人的代码,学别人的思路。

实在没思路的,可以根据这套《新手必刷编程50题》免费练习,不多不少刚刚好50道,设计基本数据类型,判断语句,数组循环,字符串与循环,栈与队列,简单递归几个知识点。

①基本数据类型 https://www.lintcode.com/problem/1 https://www.lintcode.com/problem/37 https://www.lintcode.com/problem/764 https://www.lintcode.com/problem/1300

②判断语句 https://www.lintcode.com/problem/23 https://www.lintcode.com/problem/766 https://www.lintcode.com/problem/145 https://www.lintcode.com/problem/1141 https://www.lintcode.com/problem/478 https://www.lintcode.com/problem/283

③数组与循环 https://www.lintcode.com/problem/25 https://www.lintcode.com/problem/214 https://www.lintcode.com/problem/485 https://www.lintcode.com/problem/539 https://www.lintcode.com/problem/297 https://www.lintcode.com/problem/484 https://www.lintcode.com/problem/9 https://www.lintcode.com/problem/220 https://www.lintcode.com/problem/407 https://www.lintcode.com/problem/807 https://www.lintcode.com/problem/463 https://www.lintcode.com/problem/298 https://www.lintcode.com/problem/479 https://www.lintcode.com/problem/46 https://www.lintcode.com/problem/768 https://www.lintcode.com/problem/1334 https://www.lintcode.com/problem/767 https://www.lintcode.com/problem/235 https://www.lintcode.com/problem/53 https://www.lintcode.com/problem/50

④字符串与循环 https://www.lintcode.com/problem/8 https://www.lintcode.com/problem/491 https://www.lintcode.com/problem/146 https://www.lintcode.com/problem/422 https://www.lintcode.com/problem/353 https://www.lintcode.com/problem/936 https://www.lintcode.com/problem/241 https://www.lintcode.com/problem/13 https://www.lintcode.com/problem/1535 https://www.lintcode.com/problem/1343 https://www.lintcode.com/problem/133

⑤栈与队列 https://www.lintcode.com/problem/263 https://www.lintcode.com/problem/423 https://www.lintcode.com/problem/495 https://www.lintcode.com/problem/492 https://www.lintcode.com/problem/771

⑥简单递归 https://www.lintcode.com/problem/366 https://www.lintcode.com/problem/66 https://www.lintcode.com/problem/67 https://www.lintcode.com/problem/68

二、中级阶段

此时简单逻辑已经理清楚,更多的是注重算法上的逻辑运用。这个阶段你可能需要刷50-80题,重点去掌握:链表、二分法、二分答案、相向双指针、宽度优先搜索、二叉树遍历、二叉树&分治法、二叉搜索树、深度优先搜索、坐标型动态规划、背包型动态规划、匹配型动态规划等。

主要还是锻炼你的逻辑和熟练程度,在不处理过于复杂的问题的情况下,能够提高自己的code能力和质量。

同样,根据这个思路可以试着去刷《进阶必刷编程80题》,这些题我自己都刷过,覆盖面还是非常广的,刷完去面试中小企业基本没啥问题。

链表: https://www.lintcode.com/problem/35 https://www.lintcode.com/problem/36 https://www.lintcode.com/problem/450 https://www.lintcode.com/problem/228 https://www.lintcode.com/problem/102 https://www.lintcode.com/problem/103 98 · Sort List - LintCode

二分法: https://www.lintcode.com/problem/14 https://www.lintcode.com/problem/28 https://www.lintcode.com/problem/75 https://www.lintcode.com/problem/457 https://www.lintcode.com/problem/458

二分答案: https://www.lintcode.com/problem/183 https://www.lintcode.com/problem/437 https://www.lintcode.com/problem/319 https://www.lintcode.com/problem/963

相向双指针: https://www.lintcode.com/problem/56 https://www.lintcode.com/problem/57 https://www.lintcode.com/problem/58 https://www.lintcode.com/problem/363 https://www.lintcode.com/problem/539 https://www.lintcode.com/problem/6 https://www.lintcode.com/problem/32 https://www.lintcode.com/problem/521 https://www.lintcode.com/problem/1870 https://www.lintcode.com/problem/328 https://www.lintcode.com/problem/547 https://www.lintcode.com/problem/406

宽度优先搜索: https://www.lintcode.com/problem/433 https://www.lintcode.com/problem/615 https://www.lintcode.com/problem/630 https://www.lintcode.com/problem/120 https://www.lintcode.com/problem/178/ https://www.lintcode.com/problem/278 https://www.lintcode.com/problem/787

二叉树遍历: https://www.lintcode.com/problem/66 https://www.lintcode.com/problem/67 https://www.lintcode.com/problem/68 https://www.lintcode.com/problem/69 https://www.lintcode.com/problem/73 https://www.lintcode.com/problem/72

二叉树&分治法: https://www.lintcode.com/problem/468 https://www.lintcode.com/problem/854 https://www.lintcode.com/problem/596 https://www.lintcode.com/problem/628 https://www.lintcode.com/problem/597

二叉搜索树: https://www.lintcode.com/problem/902 https://www.lintcode.com/problem/915 https://www.lintcode.com/problem/85 https://www.lintcode.com/problem/95 https://www.lintcode.com/problem/689

深度优先搜索: https://www.lintcode.com/problem/1909 https://www.lintcode.com/problem/634 https://www.lintcode.com/problem/802 https://www.lintcode.com/problem/652 https://www.lintcode.com/problem/169 https://www.lintcode.com/problem/425 https://www.lintcode.com/problem/33

坐标型动态规划: https://www.lintcode.com/problem/114 https://www.lintcode.com/problem/115 https://www.lintcode.com/problem/1861 https://www.lintcode.com/problem/1827 https://www.lintcode.com/problem/76 https://www.lintcode.com/problem/109 https://www.lintcode.com/problem/1702

背包型动态规划: https://www.lintcode.com/problem/669 https://www.lintcode.com/problem/564 https://www.lintcode.com/problem/92 https://www.lintcode.com/problem/1915 https://www.lintcode.com/problem/1800 https://www.lintcode.com/problem/125 https://www.lintcode.com/problem/440 https://www.lintcode.com/problem/562 https://www.lintcode.com/problem/563 https://www.lintcode.com/problem/724

三、 代码实现&提升代码质量

如何更快更好的做到代码实现,刷一题抵得过别人刷三题,建议不使用题海战术,而是找方法提升刷题质量。这里浅浅的分享一份刷题模板

浅浅举个例子

面试中经常会遇到双指针,有了思路不会解怎么办?

使用条件

滑动窗口(90%)

时间复杂度 O(n)(80%是双指针)

要求原地操作,只可以使用交换,不能使用额外空间(80%)

有子数组 subarray / 字符串 substring 的关键词 (50%)

有回文 Palindrome 关键词(50%)

复杂度

时间复杂度: O(n)

时间复杂度与最内层循环主体的执行次数有关与有多少重循环无关

空间复杂度: O(1)

只需要分配两个指针的额外内存

代码模板 Java Python 同样的方式套用变形题再试试看,你应该会有不同的体会

两数之和VII(同向双指针) 其次,实现代码之后,不断优化自己的代码质量,这里分享提升代码质量的12个技巧

Coding Style

二元运算符两边加空格,单元运算符不加空格花括号和 for, if 之间要加空格(Java),圆括号和 if 之间要加空格用空行分隔开不同的逻辑块逗号后面加空格

Readability

函数名和变量名用1-2个单词作为名称确保一个函数内部不超过 3 层缩进(indention)多用子函数来减少入口函数的代码量多用 continue 少用 if

Bug Free

不管有没有可能出问题,都要对入口函数的参数进行异常检测访问一个下标的时候,一定要确保这个下标不会越界访问一个对象的属性或者方法时,一定要确保这个对象不是空不用全局变量

四、有针对性的刷大厂真题

不同大厂在题库设定和考察思路上会有些许不同,但万变不离其宗。如果你是奔着上岸去的,建议多刷心仪公司的算法题,这里是我整理的大厂面试高频算法题,其中就包含了BATJ等众多一线大厂的算法真题及详解,希望对你有所帮助。 字节

会议室 3用Rand7()实现Rand10()Asteroid Collision不同岛屿的数量II删除二叉查找树的节点组合新数字食物集合恢复数组雀魂启动!删除字符

腾讯

最短休息日解压字符串中位数洪水填充移除箱子最小分解歌曲时间数字消除视野争夺逆序对

掌握至此,不用刷500题,也能轻松收获大厂offer

相关典藏

保罗真实身高不到1米80?这是真的吗?
我和黑大佬的365天知乎

保罗真实身高不到1米80?这是真的吗?

📅 10-28 👁️‍🗨️ 488
鲢鱼和草鱼哪个比较贵(草鱼和花鲢哪个肉质好)
智家365app

鲢鱼和草鱼哪个比较贵(草鱼和花鲢哪个肉质好)

📅 08-27 👁️‍🗨️ 7735
数据库并发问题有那些以及解决办法
智家365app

数据库并发问题有那些以及解决办法

📅 10-08 👁️‍🗨️ 2704