3

算法小白没关系,ACM金牌大神手把手教你科学刷leetcode

 2 years ago
source link: https://zhuanlan.zhihu.com/p/412622190
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

算法小白没关系,ACM金牌大神手把手教你科学刷leetcode

FLAG资深工程师,美帝代码搬运工,公众号:九章算法

很多初学者在刷题的时候,毫无头绪,有时候以为是 动态规划 的知识点,结果写了半天代码越写越头疼,最后一看 discuss 原来可以用 来解决。

v2-0d61037cf04b009660121877613cf5a5_720w.jpg

如果你也遇到过这种情况,又或者刷完题就忘。这里提供给你一个“特别”的角度,带你轻松掌握刷题技巧。建议认真看下去

不是自夸,我之前曾在2家北美顶尖IT企业就职并担任面试官,刷题数超过 3000 题,所以在刷题方面还算有点心得,所以在这里分享给大家,希望对大家有帮助!

首先我们要明确一点:刷题一定是有目的的,有人是为了学习算法与数据结构,有人是想跳槽刷题练手,还有的人是抱着竞赛目的来刷的……

OK,那我们就根据这几个目的,“功利”地开始刷LintCode,保证你事半功倍。

找准定位,根据自身水平循序渐进刷题

我个人理解的“高效”,应该是刷有意义的题,刷对你有帮助的题。如果你是算法小白,你可以先从入门题开始,慢慢过渡到简单/中等/困难。如果你是一个工作了1-3年,有一定算法基础的工程师,可以根据自己的情况着重补齐短板,入门题和简单题可以少刷或不刷了。

如果不清楚自己的编码能力,还可以试试LintCode上的CAT码力测试

v2-28707c80d5567f1d935b8797fdb5fce0_720w.jpg

放一些面试常考算法类型和经典题

动态规划

正则表达式匹配

交叉字符串

乘积最大子序列

二叉树中的最大路径和

按知识点tag刷,形成算法与数据结构体系

很多同学看到LC上近2000道题,也许会觉得无从下手,对于算法小白来说尤为如此。

刷题一个很重要的观念就是不要把“刷了多少题”作为指标。正确的刷法应该是把问题拆解,分解为具体的问题模式和对应的解决方法。

比如某某题属于二叉树、用到了某某算法,对于不熟悉的部分,有针对性的练习;完全理解后,再做类比思考,一举反三,逐渐地就会构建起自己的算法知识体系。

滑动窗口的中位数数据流中位数

最高频的K个单词

接雨水

堆化

排序矩阵中的从小到大第k个数

瞄准目标公司进行刷题

如果是为了求职面试,那么最高效的刷题方式就是按对应公司tag去刷。

国内外大厂的面试风格不同,常考的题目类型、知识点,算法面试难度也不同。有的公司喜欢考原题,那么抓住高频题去刷就可以事半功倍;而有的公司总是出新题,那么就不要抱着押题的想法去刷,而是重点关注这些公司偏爱考哪些知识点。

如果你已经有目标公司,并且在短期内要去面试,可以直接在LintCode上筛选公司:国内的阿里、腾讯、字节、百度,国外的Airbnb、Amazon、Facebook……针对性的刷题,目标感更强,方向也更精准,对于提高面试通过率是很有帮助的。

二叉树

二叉树中序遍历二叉树的序列化和反序列化

子树

最近公共祖先

二叉树的层次遍历

找到刷题的乐趣

如果你是一个毅力不太够的人,还可以用闯关式的方法进行答题。

选择LintCode的阶梯训练,不但可以根据公司进行刷题,还能进行闯关答题的方式。这种方式可以增加趣味性,还能让你更有答题的兴趣。

最后,愉快地刷起来吧~

二分法

经典二分查找问题

两数组的交

区间最小数

寻找旋转排序数组中的最小值

哈希表

变形词子串哈希函数

短网址

复制带随机指针的链表

最小子串覆盖

链表

实现一个链表的反转链表求和 II

删除链表中的元素

LRU缓存策略

合并两个排序链表

深度优先搜索

N皇后问题图是否是树

带重复元素的排列

分割回文串

字符串处理

罗马数字转整数回文数

乱序字符串

有效回文串

翻转字符串


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK