66套java从入门到精通实战课程领取
帖子信息
LeetCode刷题手册.pdf
网民用户:yanliang   分享于  2023-03-24   所需:0 积分   侵权举报

第一章 序章 关于 LeetCode

说到 LeetCode,作为一个程序员来说,应该不陌生,近几年参加面试都会提到它。国内外的程序员用 它刷题主要是为了面试。据历史记载,这个网站 2011 年就成立了,⻢上就要到自己 10 周年的生日 了。每周举行周赛,双周赛,月赛,在有限时间内编码,确实非常能考验人的算法能力。一些大公司赞 助冠名的比赛获得前几名除了有奖品,还能直接拿到内推的机会。

什么是 Cookbook
直译的话就是烹饪书,教你做各种⻝谱美⻝的书。经常看 O'Reilly 技术书的同学对这个名词会很熟悉。

一般动手操作,实践类的书都会有这个名字。

为什么会写这个开源书

笔者刷题刷了一年了,想和大家分享分享一些做题心得,解题方法。想和有相同爱好的人交个朋友,一
起交流学习。对于自己来说,写题解也是一种提高。把一道深奥的题目讲给一点都没有头绪的人,并能
让他完全听懂,很能锻炼人的表达能力。在讲解中很可能还会遇到听者的一些提问,这些问题可能是自
己的知识漏洞,强迫自己去弥补。笔者在公司做过相关的分享,感受很深,双方受益都还不错。

另外,在大学期间,笔者做题的时候最讨厌写题解,感觉是浪费时间,用更多的时间去做更多的 题。现在不知道算不算是出来混的,总是要还的

关于书的封面

常看 O'Reilly 动物书的同学一看这个封面就知道是向他们致敬。确实是这个目的。O'Reilly 的封面动物 都是稀缺动物,并且画⻛都是黑白素描⻛。这些动物都有版权了,所以只能在网上找没有版权的黑白素 描⻛的图片。常⻅的能找到 40 张这种⻛格的图片。不过用的人太多了,笔者费劲的找了其他几张这种 图片,这张孔雀开屏是其中一张。孔雀开屏的意义是希望大家刷完 LeetCode 以后,提高了自身的算法 能力,在人生的舞台上开出自己的。全书配色也都是绿色,因为这是 AC 的颜色。

关于作者

笔者是一个刚刚入行一年半的 gopher 新人,还请各位大佬多多指点小弟我。大学参加了 3 ACM- ICPC,但是由于资质不高,没有拿到一块金牌。所以在算法方面,我对自己的评价算是新手吧。参加 ACM-ICPC 最大的收获是训练了思维能力,这种能力也会运用到生活中。其次是认识了很多国内很聪明 的选手,看到了自己和他们的差距。最后,就是那 200 多⻚,有些自己都没有完全理解的,打印的密密 麻麻的算法模板。知识学会了,终身都是自己的,没有学会,那些知识都是身外之物。

笔者从 2019 3 25 号开始刷题,到 2020 3 25 号,整整一年的时间。原计划是每天一题。实 际上每天有时候不止一题,最终完成了 600+:

一个温馨提示:笔者本以为每天做一题,会让这个 submissions 图全绿,但是我发现我错了。如 果你也想坚持,让这个图全绿,一定要注意以下的问题:LeetCode 服务器是在 +0 时区的,这个 图也是按照这个时区计算的。也就是说,中国每天早上 8 点之前,是算前一天的!也是因为时区 的问题,导致我空白了这 22 个格子。比如有一道 Hard 题很难,当天工作也很多,晚上下班回家 想出来了就到第二天凌晨了。于是再做一题当做第二天的量。结果会发现这 2 题都算前一天的。 有时候笔者早上 6 点起床刷题,提交以后也都是前一天的。

(当然这些都是过去了,不重要了,全当是奋斗路上的一些小插曲)
2020 年笔者肯定还会继续刷题,因为还没有达到自己的一些目标。可能会朝着 1000 题奋进,也有可能

刷到 800 题的时候回头开始二刷,三刷。(不达目的不罢休吧~) 关于书中的代码

代码都放在 github repo 中,按题号可以搜索到题目。
本书题目的代码都已经
beats 100% 了。没有 beats 100% 题解就没有放到本书中了。那些题目笔者会 继续优化到 100% 再放进来。

有可能读者会问,为何要追求 beats 100%。笔者认为优化到 beats 100% 才算是把这题做出感觉了。 有好几道 Hard 题,笔者都用暴力解法 AC 了,然后只 beats 5%。这题就如同没做一样。而且面试中 如果给了这样的答案,面试官也不会满意,还有没有更优解?。如果通过自己的思考能给出更优解, 面试官会更满意一些。

LeetCode 统计代码运行时⻓会有波动的,相同的代码提交 10 次可能就会 beats 100% 了。笔者开始没 有发现这个问题,很多题用正确的代码连续交了很多次,一年提交 3400+ 次,导致我的正确率也变的奇 高。

当然,如果还有其他更优美的解法,也能 beats 100% 的,欢迎提交 PR,笔者和大家一起学习。 目标读者
想通过 LeetCode 提高算法能力的编程爱好者。
编程语言

本书的算法全部用 Go 语言实现。 使用说明

本电子书的左上⻆有搜索栏,可以迅速帮你找到你想看的章节和题号。
本电子书每⻚都接入了
Gitalk,每一⻚的最下方都有评论框可以评论,如果没有显示出来,请检查 自己的网络。
关于题解,笔者建议这样使用:先自己读题,思考如何解题。如果
15 分钟还没有思路,那么先看 笔者的解题思路,但是不要看代码。有思路以后自己用代码实现一遍。如果完全不会写,那就看笔 者提供的代码,找出自己到底哪里不会写,找出问题记下来,这就是自己要弥补的知识漏洞。如果 自己实现出来了,提交以后有错误,自己先 debugAC 以后没有到 100% 也先自己思考如何优 化。如果每道题自己都能优化到 100% 了,那么一段时间以后进步会很大。所以总的来说,实在没 思路,看解题思路;实在优化不到 100%,看看代码。

互动与勘误

如果书中文章有所遗漏,欢迎点击所在⻚面下边的 edit 按钮进行评论和互动,感谢您的支持与帮助。 最后
一起开始刷题吧~


评论信息  共0条
相关资源
热门资源
Powered by Java1234  |  免责申明   |  侵权举报
Copyright © 2012-2023 Java知识分享网 版权所有