刷满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
在这里插入图片描述
同样的方式套用变形题再试试看,你应该会有不同的体会

Coding Style

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

Readability

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

Bug Free

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

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

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

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

腾讯

  1. 最短休息日
  2. 解压字符串
  3. 中位数
  4. 洪水填充
  5. 移除箱子
  6. 最小分解
  7. 歌曲时间
  8. 数字消除
  9. 视野争夺
  10. 逆序对

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

  • 3
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值