刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传

前言

随着互联网金九银十的到来, 越来越多的互联网公司为了考核程序员的思维能力,提高了面试的难度,其中之一就是加大了面试当中手撕算法题的比例。这里说的算法题不是深度学习,机器学习这类的算法,而是排序,广度优先,动态规划这类既考核数据结构也考核编程能力的题目。刷题的网址非常的多,其中以leetcode是最为出名的。

在众多的诸如阿里、腾讯等众多BAT大厂之中,最看中面试者刷题技能的大概要数有“链表厂”之称的字节跳动了。作为一个新晋大厂,字节跳动以高薪、技术大佬云集吸引了众多的程序员呢,问题来了,怎么才能进入“链表厂”呢?答案之一:刷题!

刷题就不得不提 LeetCode 了,如何高效地刷 LeetCode 便是本文要说的事情了。

第一份算法刷题宝典Table of Contents

目录

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第1张图片

 

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第2张图片

 

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第3张图片

 

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第4张图片

 

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第5张图片

 

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第6张图片

 

第一章、动态规划系列

具体来说,动态规划的一般流程就是三步:暴力的递归解法->带备忘录的递归解法->迭代的动态规划解法。

就思考流程来说,就分为以下几步:找到状态和选择->明确dp数组/函数的定义->寻找状态之间的关系。

这就是思维模式的框架,本章都会按照以上的模式来解决问题,辅助读者养成这种模式思维,有了方向遇到问题就不会抓瞎,足以解决一般的动态规划问题。

  • 动态规划答疑篇
  • 动态规划和回溯算法到底谁是谁爹?
  • 动态规划设计:最长递增子序列
  • 经典动态规划: 0-1背包问题
  • 经典动态规划:编辑距离
  • 经典动态规划:高楼扔鸡蛋(进阶)
  • 经典动态规划:戳气球
  • 经典动态规划:最长公共子序列
  • 动态规划之子序列问题解题模板
  • 动态规划之博弈问题
  • 动态规划之正则表达
  • 动态规划之四键键盘
  • 动态规划之KMP字符匹配算法
  • 贪心算法之区间调度问题

回溯算法

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第7张图片

 

背包问题

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第8张图片

 

扩展延伸

 

 

定义dp数组的含义

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第9张图片

 

四键键盘

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第10张图片

 

第二章、数据结构系列

这一章主要是一些特殊的数据结构设计,比如单调栈解决Next GreaterNumber,单调队列解决滑动窗口问题;还有常用数据结构的操作,比如链表、树、二叉堆

  • 学习数据结构和算法读什么书
  • 算法学习之路
  • 二叉堆详解实现优先级队列
  • LRU算法详解
  • 叉搜索树操作集锦
  • 如何计算完全二叉树的节点数
  • 特殊数据结构:单调栈
  • 特殊数据结构:单调队列
  • 设计Twitter
  • 递归反转链表的一部分
  • 队列实现栈栈实现队列

二叉堆概览

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第11张图片

 

在BST中删除一个数

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第12张图片

 

完全二叉树的节点个数

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第13张图片

 

如何使用单调栈解题

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第14张图片

 

单调队列

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第15张图片

 

反转链表前N个节点

 

 

第三章、算法思维系列

本章包含一些常用的算法技巧,比如前缀和、回溯思想、位操作、双指针、如何正确书写二分查找等等。

  • 回溯算法团灭子集.排列.组合问题
  • 回溯算法最佳实践:解数独
  • 回溯算法最佳实践:括号生成
  • 双指针技巧总结
  • twoSum问题的核心思想
  • 常用的位操作
  • 烧饼排序
  • 前缀和技巧
  • 字符串乘法
  • FloodFl算法详解及应用
  • 区间调度之区间合井问题
  • 区间调度之区间交集问题
  • 信封嵌套问题
  • 几个反直觉的概率问题

回溯算法秒杀数独问题

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第16张图片

 

快慢指针的常见算法

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第17张图片

 

算法常用操作n&(n-1)

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第18张图片

 

优化解法

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第19张图片

 

FloodFill算法概念

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第20张图片

 

拓展延伸:自动魔棒工具和扫雷

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第21张图片

 

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第22张图片

 

区间交集问题

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第23张图片

 

信封嵌套

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第24张图片

 

三门问题

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第25张图片

 

第四章、高频面试系列

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

如何用BFS算法秒杀各种智力题

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第26张图片

  • 如何高效寻找素数
  • 如何高效进行模幂运算
  • 如何运用二分查找算法

如何高效解决接雨水问题

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第27张图片

 

  • 如何去除有序数组的重复元素
  • 如何寻找最长回文子串
  • 如何运用贪心思想玩跳跃游戏

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第28张图片

 

  • 如何k个一组反转链表
  • 如何判定括号合法性
  • 如何寻找缺失的元素

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第29张图片

 

如何同时寻找缺失和重复的元素

如何判断回文链表

如何在无限序列中随机抽取元素

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第30张图片

 

如何调度考生的座位

Union-Find算法详解

Union-Find算法应用

一行代码就能解决的算法题

二分查找高效判定子序列

Linux的进程、线程、文件描述符是什么

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第31张图片

 

关于Linux shell你必须知道的

Linux shell的实用小技巧

一文看懂session和cookie

加密算法的前身今世

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第32张图片

 

Git/SQL/正则表达式的在线练习平台

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第33张图片

 

这份算法刷题宝典【Table of Contents】文档共有562页,需要完整版的朋友,可以点赞此文关注小编,【见下图】来获取! !

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第34张图片

第二份算法刷题宝典【LeetCode Cookbook】

目录

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第35张图片

 

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第36张图片

 

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第37张图片

 

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第38张图片

 

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第39张图片

 

(Σ( ° △ °|||)︴汗)大概1470+,就不一一例出了,望大家理解

第一章、关于LeetCode

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

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第40张图片

 

第二章、算法专题

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

那么这一章就把已经刷完了的专题都整理一遍。 有相似套路的题目都放在一起,如果想快速面试的话,其实相同的题目刷2、3道就可以了。相同类型的题目非常熟练的情况下,再多刷几道也是做无用功。做到目前为止,笔者认为动态规划是最灵活的类型,这类题目没有一个模板可以给你套用,它也是算法之优雅的地方。笔者认为称它为算法的艺术不为过。动态规划这类型,笔者也还没有刷完,只刷了一部分,还在学习中。

那么就分享一下笔者目前刷过的题,和有相似点的题目吧。

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第41张图片

 

Bit Manipu lation

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第42张图片

 

异或的特性。第136题,第268题,第389题,第421题

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第43张图片

 

Union Find

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第44张图片

 

  • 灵活使用并查集的思想,熟练掌握并查集的模板,模板中有两种并查集的实现方式,一种是路径压缩+秩优化的版本,另外一种是计算每个集合中元素的个数+最大集合元素个数的版本,这两种版本都有各自使用的地方。能使用第一类并查集模板的题目有:第128题,第130题,第547题,第684题,第721题,第765题,第778题,第839题,第924题,第928题,第947题,第952题,第959题,第990题。能使用第二类并查集模板的题目有:第803题,第952题。第803题秩优化和统计集合个数这些地方会卡时间、如果不优化,会TLE。
  • 并查集是一种思想,有些题需要灵活使用这种思想,而不是死套模板,如第399题,这一题是stringUnionFind,利用并查集思想实现的。这里每个节点是基于字符串和map的,而不是单纯的用int节点编号实现的。
  • 有些题死套模板反而做不出来,比如第685题,这一题不能路径压缩和秩优化,因为题目中涉及到有向图,需要知道节点的前驱节点,如果路径压缩了,这一题就没法做了。 这一题不需要路径压缩和秩优化。
  • 灵活的抽象题目给的信息,将给定的信息合理的编号,使用并查集解题,并用map降低时间复杂度,如第721题,第959题。
  • 关于地图,砖块,网格的题目,可以新建一个特殊节点,将四周边缘的砖块或者网格都union()到这个特殊节点上。第130题,第803题。
  • 能用并查集的题目,一般也可以用DFS和BFS解答,只不过时间复杂度会高一点小。

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第45张图片

 

第三章、一些模板

线段树Segment Tree

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第46张图片

 

友情提示:(内容太长,只截取部分)

并查集UnionFind

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第47张图片

 

友情提示:(内容太长,只截取部分)

第四章、Leetcode题解

这一章就是LeetCode的题解了。笔者目前只刷到608题,题解这里有520题,都已经runtime beats100%了。相差的88题是还没有beats 100%的,笔者还需要继续优化~

题解慢慢更新中,欢迎大家提出更好的解法。点击页面下方的edit,会跳转到github对应的页面markdown中,可以提交你的最优解PR。

让我们在题解的太空遨游吧~

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第48张图片

 

由于内容实在太多,无法一一展现出来,只截取部分内容供大家参考,若你对文中算法宝典感兴趣的话可以关注+转发后,在我的主页私信【666】即可获取到这份算法宝典

1. Two Sum

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第49张图片

 

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第50张图片

 

327. Count of Range Sum

 

 

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第51张图片

 

401. Binary Watch

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第52张图片

 

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第53张图片

 

529. Minesweeper

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第54张图片

 

636. Exclusive Time of Functions

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第55张图片

 

812. Largest Triangle Area

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第56张图片

 

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第57张图片

 

850. Rectangle Area lI

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第58张图片

 

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第59张图片

 

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第60张图片

 

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第61张图片

 

968. Binary Tree Cameras

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第62张图片

 

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第63张图片

 

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第64张图片

 

999. Available Ca ptures for Rook

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第65张图片

 

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第66张图片

 

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第67张图片

 

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第68张图片

 

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第69张图片

 

1157. Online Majority Element In Subarray

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第70张图片

 

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第71张图片

 

1252. Cells with Odd Values in a Matrix

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第72张图片

 

 

 

 

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第73张图片

 

这份(算法刷题宝典【LeetCode Cookbook】)文档共1121页,需要完整版的朋友,可以点赞此文关注小编,【见下图】来获取!!

刷题必备!堪称最强!火爆GitHub的算法刷题宝典现已被全网疯传_第74张图片

 

2020年笔者肯定还会继续刷题,因为还没有达到自己的一些目标。可能会朝着1000题奋进,也有可能刷到800题的时候回头开始二刷,三刷。(不达目的不罢休吧~)

努力把数据结构与算法这一块儿给搞明白,相信一定会有不凡的人生!

你可能感兴趣的:(算法,数据结构,java,面试,subversion)