别再用leetcode无脑刷题了!
刷题不应该量化为“刷多少道题”,对于刷题来说,永远不是追求数量的堆叠。
你想,LeetCode 上的题难度不等,有简单、中等、困难。
刷100道简单题倒是快,一个星期保证完事,但是有什么提高呢?
刷100道难题更快,刷第一道,然后一直做不出来,看答案也看不懂,直接劝退。
所以刷题一定要掌握一些技巧,因为刷题是一个系统性的工程,要有章法有规划的进行。
看看ACM金牌选手自用的刷题顺序:
1.基本数据类型
没有条件控制,没有循环,单纯的按从上到下的顺序执行代码,例如数学计算,取模等问题
2.判断语句
主要考察选择结构,没有循环,有if,else if,else等判断语句,例如判断闰年等问题
3.数组与循环
主要考察数组、循环语句,以while、for循环为代码主体的题,不要出现字符串,如数组求和等问题
4.字符串与循环
考察字符串操作,例如判断 回文串、求子串等问题
5.栈与队列
主要考察栈和队列的特性,调用库来完成题目要求,或简单实现,比如括号匹配等问题
6.简单递归
递归类问题,超简单的那种,比如 斐波那契
(ps:文章末尾附详细题单,建议收藏后观看,以防意外走丢~)
分享一个昨天收到的知友私信
其实,我在知乎上收到类似的私信真的太多次了,我总结大家的主流想法都是:“找一个名气大的刷题工具,开始废寝忘食的狂刷”,却忘了老祖宗曾说过的因人而异~
leetcode虽然题库庞大,但同考点题目冗杂,太多复杂的知识点交错在一起,很容易心态崩溃,真心不建议新手盲刷,效率低且刷完就忘!
新手我更建议使用国内炼码(lintcode),它的题库都是按照考点分类的,每道题有专门的知识点详解,刷题效率高,刷1道等于在leetcode刷3道的效果,而且还有国内大厂常考题集帮你快速进入备考状态。
【刷题建议】
如果你是新手或者想巩固编程知识,可以根据题目类型or知识点tag进行细分刷题,让刷题变得更高效、有目的性。
https://xg.zhihu.com/plugin/9eff4a8c5b9ec856eb2ff16183d2a2b4?BIZ=ECOMMERCE里面的题库是按算法、数据结构、系统设计等不同维度进行分类的,可以根据自己的实际情况有针对性的查漏补缺。
【题集】
它家的题库都是紧随大厂的真题实时更新的,包含了字节/华为/百度/FB/谷歌等国内外各大知名IT企业的OA、面试真题、高频题,保证了题库的时效性。
当然,如果你有明确的目标公司,建议你可以多刷该公司的常考题、必考题。
【新手题集】
如果你是新手,那么【新手必刷编程50题】就很适合你了,巩固实操你学的编程知识,尽快建立起完善的知识架构,让刷题变得事半功倍!
(ps:新用户注册就能免费用了,这50道题刷完更有助于完善编程知识框架哦~)
【SQL等教程入门】
LintCode最近新开发了一个模块,从上方菜单栏【学习】入口进入,如果想要零基础学习SQL/Java等,可以来体验一下哦,教程目前免费开放!
https://xg.zhihu.com/plugin/ede89072529407b687301dd1d05aad5f?BIZ=ECOMMERCE★接下来我把lintcode上高效刷题的题单整理成文字版也分享出来:
(ps:下述题目编号即为lintcode题库编号)
1、基本数据类型
1 · A+B问题
37 · 反转一个三位整数
764 · 计算圆周长和面积
1300 · 巴什博弈
2、判断语句
23 · 判断数字与字母字符
766 · 闰年
145 · 大小写转换
1141 · 月份天数
283 · 三数之中的最大值
3、数组与循环
25 · 打印X
539 · 移动零
297 · 寻找最大值
484 · 交换数组两个元素
9 · Fizz Buzz 问题
407 · 加一
463 · 整数排序
298 · 寻找素数
479 · 数组第二大数
46 · 主元素
768 · 杨辉三角
1334 · 旋转数组
767 · 翻转数组
53 · 翻转字符串
50 · 数组剔除元素后的乘积
4、字符串与循环
8 · 旋转字符数组
491 · 回文数
422 · 最后一个单词的长度
353 · 最大字母
936 · 首字母大写
13 · 字符串查找
1535 · 转换成小写字母
1343 · 两字符串和
5、栈与队列
263 · 小括号匹配
423 · 有效的括号序列
495 · 实现栈
492 · 队列维护
6、简单递归
366 · 斐波纳契数列
66 · 二叉树的前序遍历
67 · 二叉树的中序遍历
68 · 二叉树的后序遍历
如果这些题刷完了,说明你已经逐步建立起编程的思维,能够完成一些简单的代码题,这时候就可以开始逐步进阶,完成一些更高level的题目,目标是能够应付大厂的算法题。
所以,这一阶段你可以按照面试中常考的知识点进行准备,主要包括:
链表、 二分法、二分答案、相向双指针、宽度优先搜索、二叉树遍历、二叉树&分治法、二叉搜索树、深度优先搜索、坐标型动态规划、背包型动态规划、匹配型动态规划。
★进阶版对应题库:
(ps:下述题目编号即为lintcode题库编号)
7、链表
35 · 翻转链表(一)
36 · 翻转链表(二)
450 · K组翻转链表
102 · 带环链表
98 · 链表排序
8、二分法
14 · 二分查找
28 · 搜索二维矩阵
75 · 寻找峰值
457 · 经典二分查找问题
9、二分答案
183 · 木材加工
437 · 书籍复印
319 · 方阵排队
10、相向双指针
56 · 两数之和
57 · 三数之和
58 · 四数之和
363 · 接雨水
539 · 移动零
6 · 合并排序数组
32 · 最小子串覆盖
1870 · 全零子串的数量
547 · 两数组的交集
406 · 和大于S的最小子数组
11、宽度优先搜索
433 · 岛屿的个数
615 · 课程表
120 · 单词接龙
178 · 图是否是树
278 · 绘制填充
787 · 迷宫
12、二叉树遍历
66 · 二叉树的前序遍历
67 · 二叉树的中序遍历
68 · 二叉树的后序遍历
69 · 二叉树的层次遍历
73 · 前序遍历和中序遍历树构造二叉树
72 · 中序遍历和后序遍历树构造二叉树
13、二叉树&分治法
854 · 二叉树中最近的叶子
14、二叉搜索树
902 · BST中第K小的元素
915 · BST的中序前驱节点
85 · 在二叉查找树中插入节点
95 · 验证二叉查找树
689 · 两数之和 - BST版本
15、深度优先搜索
634 · 单词矩阵
802 · 数独
652 · 因式分解
169 · 汉诺塔
425 · 电话号码的字母组合
33 · N皇后问题(一)
16、坐标型动态规划
114 · 不同的路径
115 · 不同的路径 II
1827 · 停在原地的方案数2
76 · 最长上升子序列
109 · 数字三角形
1702 · 不同的子序列 II
17、背包型动态规划
669 · 换硬币
92 · 背包问题
125 · 背包问题(二)
440 · 背包问题 III
562 · 背包问题 IV
563 · 背包问题 V
724 · 最小划分
上述这些题目均出自lintcode题库,可以根据自己的实际需求选择对应模块的题目,赶紧刷起来吧!!
https://xg.zhihu.com/plugin/98058eee0becbb0c3f01646cd3a2e8f7?BIZ=ECOMMERCE