Files
2020-08-20 10:01:55 +08:00

88 lines
7.0 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: 序
type: docs
---
# 序
{{< columns >}}
## 关于 LeetCode
说到 LeetCode作为一个程序员来说应该不陌生近几年参加面试都会提到它。国内外的程序员用它刷题主要是为了面试。据历史记载这个网站 2011 年就成立了,马上就要到自己 10 周年的生日了。每周举行周赛,双周赛,月赛,在有限时间内编码,确实非常能考验人的算法能力。一些大公司赞助冠名的比赛获得前几名除了有奖品,还能直接拿到内推的机会。
<--->
## 什么是 Cookbook
直译的话就是烹饪书,教你做各种食谱美食的书。经常看 O'Reilly 技术书的同学对这个名词会很熟悉。一般动手操作,实践类的书都会有这个名字。
{{< /columns >}}
<img src="https://books.halfrost.com/leetcode/logo.png" alt="logo" height="600" align="right" style="padding-left: 30px;"/>
## 为什么会写这个开源书
笔者刷题刷了一年了,想和大家分享分享一些做题心得,解题方法。想和有相同爱好的人交个朋友,一起交流学习。对于自己来说,写题解也是一种提高。把一道深奥的题目讲给一点都没有头绪的人,并能让他完全听懂,很能锻炼人的表达能力。在讲解中很可能还会遇到听者的一些提问,这些问题可能是自己的知识漏洞,强迫自己去弥补。笔者在公司做过相关的分享,感受很深,双方受益都还不错。
> 另外,在大学期间,笔者做题的时候最讨厌写题解,感觉是浪费时间,用更多的时间去做更多的题。现在不知道算不算是“出来混的,总是要还的”。
## 关于书的封面
常看 O'Reilly 动物书的同学一看这个封面就知道是向他们致敬。确实是这个目的。O'Reilly 的封面动物都是稀缺动物,并且画风都是黑白素描风。这些动物都有版权了,所以只能在网上找没有版权的黑白素描风的图片。常见的能找到 40 张这种风格的图片。不过用的人太多了,笔者费劲的找了其他几张这种图片,这张孔雀开屏是其中一张。孔雀开屏的意义是希望大家刷完 LeetCode 以后,提高了自身的算法能力,在人生的舞台上开出自己的“屏”。全书配色也都是绿色,因为这是 AC 的颜色。
## 关于作者
笔者是一个刚刚入行一年半的 gopher 新人,还请各位大佬多多指点小弟我。大学参加了 3 年 ACM-ICPC但是由于资质不高没有拿到一块金牌。所以在算法方面我对自己的评价算是新手吧。参加 ACM-ICPC 最大的收获是训练了思维能力,这种能力也会运用到生活中。其次是认识了很多国内很聪明的选手,看到了自己和他们的差距。最后,就是那 200 多页,有些自己都没有完全理解的,打印的密密麻麻的[算法模板](https://github.com/halfrost/LeetCode-Go/releases/tag/Special)。知识学会了,终身都是自己的,没有学会,那些知识都是身外之物。
笔者从 2019 年 3 月 25 号开始刷题,到 2020 年 3 月 25 号,整整一年的时间。原计划是每天一题。实际上每天有时候不止一题,最终完成了 600+
![](https://img.halfrost.com/Blog/ArticleImage/2019_leetcode.png)
> 一个温馨提示:笔者本以为每天做一题,会让这个 submissions 图全绿但是我发现我错了。如果你也想坚持让这个图全绿一定要注意以下的问题LeetCode 服务器是在 +0 时区的,这个图也是按照这个时区计算的。也就是说,中国每天早上 8 点之前,是算前一天的!也是因为时区的问题,导致我空白了这 22 个格子。比如有一道 Hard 题很难,当天工作也很多,晚上下班回家想出来了就到第二天凌晨了。于是再做一题当做第二天的量。结果会发现这 2 题都算前一天的。有时候笔者早上 6 点起床刷题,提交以后也都是前一天的。
>
> (当然这些都是过去了,不重要了,全当是奋斗路上的一些小插曲)
2020 年笔者肯定还会继续刷题,因为还没有达到自己的一些目标。可能会朝着 1000 题奋进,也有可能刷到 800 题的时候回头开始二刷,三刷。(不达目的不罢休吧~)
## 关于书中的代码
代码都放在 [github repo](https://github.com/halfrost/LeetCode-Go/tree/master/leetcode) 中,按题号可以搜索到题目。
本书题目的代码都已经 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 分钟还没有思路,那么先看笔者的解题思路,但是不要看代码。有思路以后自己用代码实现一遍。如果完全不会写,那就看笔者提供的代码,找出自己到底哪里不会写,找出问题记下来,这就是自己要弥补的知识漏洞。如果自己实现出来了,提交以后有错误,自己先 debug。AC 以后没有到 100% 也先自己思考如何优化。如果每道题自己都能优化到 100% 了,那么一段时间以后进步会很大。所以总的来说,实在没思路,看解题思路;实在优化不到 100%,看看代码。
## 互动与勘误
如果书中文章有所遗漏,欢迎点击所在页面下边的 edit 按钮进行评论和互动,感谢您的支持与帮助。
## 最后
一起开始刷题吧~
![](https://img.halfrost.com/Blog/ArticleImage/hello_leetcode.png)
本作品采用 [知识署名-非商业性使用-禁止演绎 BY-NC-ND 4.0 国际许可协议](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode.zh-Hans) 进行许可。
题解里面的所有题目版权均归 [LeetCode](https://leetcode.com/) 和 [力扣中国](https://leetcode-cn.com/) 所有