写点什么

Github 惊现高星神作,两份算法宝典让你横扫大厂算法面试题

用户头像
云流
关注
发布于: 2020 年 10 月 19 日

前言


有些小伙伴可能会有疑惑,为什么面试总喜欢问算法与数据结构问题,这是有原因的


首先,算法能看出一个程序员的 基本功 ,数据结构与算法是计算机领域里面最最基础的学科,其他更高级的领域都或多或少都涉及到算法与数据结构,说算法与数据结构为其他计算机领域的地基也不过分。而且对于校招的小伙伴们来说,可能并没有太过丰富的项目经验,面试官也考虑到了这种情况,所以面试官倾向于问算法问题。


其次,面试中问算法与数据结构问题,是一种行之有效的 筛人方式 ,如果一个人连最基本的算法与数据结构都弄不清楚,我们怎么能放心把复杂的真实业务场景交给他负责呢。如果一个程序员有很深的数据结构与算法功底,这个程序员大概率是个 靠谱 的程序员。


说到算法方面,程序员该如何提升呢?


答案是:刷 LeetCode


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


网上对 LeetCode 的评论大多都是正面的,称 LeetCode 为计算机科学领域,最赫赫有名的题库毫不为过。初学者可以在这里得到提升,资深者也能在此受益匪浅。


第一份 LeetCode 算法刷题宝典


目录





emmm................Σ( ° △ °|||)︴ 内容太多了大概 1000+题目,中间的就省略了....完整版可见文末......




第一章算法专题


本来天真的认为,把 LeetCode 所有题都完整刷一遍,就可以完整这本书了。经过事实证明,确实是天真了。因为 LeetCode 每天都会增加新题,有时候工作忙了,刷题进度就完全追不上题目更新的速度了。而且以我当前的刷题速度,一年才完成 500+, 一年 LeetCode 也会更新 400+多题,要起码 5~10 年才能把所有的题目刷完。时间太长了。所以先给自己定了一个小目标,500 题就先把书写出来,总结这个阶段的刷题心得,和大家一起交流。要想把 LeetCode 所有题目都刷完,看来这本书要迭代 5~ 10 个版本了(一年迭代一版)。

那么这一章就把已经刷完了的专题都整理一遍。有相似套路的题目都放在一起, 如果想快速面试的话,其实相同的题目刷 2,3 道就可以了。相同类型的题目非常熟练的情况下,再多刷几道也是做无用功。

做到目前为止,笔者认为动态规划是最灵活的类型,这类题目没有一个模板可以给你套用,它也是算法之优雅的地方。笔者认为称它为算法的艺术不为过动态规划这类型,笔者也还没有刷完,只刷了一部分,还在学习中。

 



专题较多.......列举部分..QAQ


Array






Stack





Two Pointers





第二章、一些模板


线段树 Segment Tree




内容较多.........略过了.............Σ( ° △ °|||)︴


第三章、Leetcode 题解



中间略过了......大概 1000+题目.....噩梦 QAQ




Container With Most Water



Letter Com binations of a Phone Number



36. Valid Sudoku


题目




62. Unique Paths




160. Intersection of Two Linked Lists





218. The Skyline Problem






223. Rectangle Area




378. Kth Smallest Element in a Sorted Matrix




500. Keyboard Row




802. Find Eventual Safe States




838. Push Dominoes




850. Rectangle Area Il





952. Largest Component Size by Common Factor




1232. Check Iflt Is a Straight Line




1254. Number of Closed Islands




1302. Deepest Leaves Sum



这份 LeetCode 算法刷题宝典内容太多,小编也无法一一给大家全部展现出来,完整版的可以在文末看到哦..................下面我们来看看第二份算法刷题宝典吧


第二份算法刷题宝典


目录大纲






动态规划系列


  • 动态规划设计:最长递增子序列

  • 经典动态规划: 0-1 背包问题

  • 经典动态规划:完全背包问题

  • 经典动态规划:子集背包问题

  • 经典动态规划:编辑距离

  • 经典动态规划:高楼扔鸡蛋

  • 经典动态规划:高楼扔鸡蛋(进阶)

  • 经典动态规划:最长公共子序列

  • 动态规划之子序列问题解题模板

  • 动态规划之博弈问题

  • 动态规划之正则表达

  • 动态规划之四键键盘

  • 动态规划之 KMP 字符匹配算法

  • 贯心算法之区间调度问题

  • 团灭 LeetCode 股票买卖问题

  • 团灭 LeetCode 打家劫舍问题


二分查找解法




最长公共子序列




数据结构系列


  • 算法学习之路

  • 二叉堆详解实现优先级队列

  • LRU 算法详解

  • 二叉搜索树操作集锦

  • 如何计算完全二叉树的节点数

  • 特殊数据结构:单调栈

  • 特殊数据结构:单调队列

  • 设计 Twitter

  • 递归反转链表的一部分

  • 队列实现栈栈实现队列


快速计算完全叉树的节点


如果让你数一下一棵普通二叉树有多少个节点,这很简单,只要在二叉树的遍历框架上加一点代码就行了。




算法思维系列


  • 回溯算法团灭子集、排列、组合问题

  • 回溯算法最佳实践:解数独.

  • 回溯算法最佳实践:括号生成

  • 滑动窗口技巧

  • twoSum 问题的核心思想

  • 常用的位操作.

  • 拆解复杂问题:实现计算器

  • 烧饼排序

  • 前缀和技巧

  • 字符串乘法

  • FoodFill 算法详解及应用

  • 区间调度之区间合并问题

  • 区间调度之区间交集问题

  • 信封嵌套问题

  • 几个反直觉的概率问题

  • 洗牌算法

  • 递归详解


区间交集问题




高频面试系列


8 说了,本章都是高频面试题,配合前面的动态规划系列,祝各位马到成功!





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


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


当然,如果还有其他更优美的解法,也能 beats 100%的,欢迎提交 PR,笔者和大家一起学习。


这两份算法刷题宝典【LeetCode Cookbook】、【Table of Contents】文档分别为 1121 页、666 页,需要完整版的朋友,可以点赞此文关注小编,【见下图】即可获取!!



用户头像

云流

关注

还未添加个人签名 2020.09.02 加入

还未添加个人简介

评论

发布
暂无评论
Github惊现高星神作,两份算法宝典让你横扫大厂算法面试题