随着互联网金九银十的到来, 越来越多的互联网公司为了考核程序员的思维能力,提高了面试的难度,其中之一就是加大了面试当中手撕算法题的比例。这里说的算法题不是深度学习,机器学习这类的算法,而是排序,广度优先,动态规划这类既考核数据结构也考核编程能力的题目。刷题的网址非常的多,其中以leetcode是最为出名的。
在众多的诸如阿里、腾讯等众多BAT大厂之中,最看中面试者刷题技能的大概要数有“链表厂”之称的字节跳动了。作为一个新晋大厂,字节跳动以高薪、技术大佬云集吸引了众多的程序员呢,问题来了,怎么才能进入“链表厂”呢?答案之一:刷题!
刷题就不得不提 LeetCode 了,如何高效地刷 LeetCode 便是本文要说的事情了。
目录
具体来说,动态规划的一般流程就是三步:暴力的递归解法->带备忘录的递归解法->迭代的动态规划解法。
就思考流程来说,就分为以下几步:找到状态和选择->明确dp数组/函数的定义->寻找状态之间的关系。
这就是思维模式的框架,本章都会按照以上的模式来解决问题,辅助读者养成这种模式思维,有了方向遇到问题就不会抓瞎,足以解决一般的动态规划问题。
回溯算法
背包问题
扩展延伸
定义dp数组的含义
四键键盘
这一章主要是一些特殊的数据结构设计,比如单调栈解决Next GreaterNumber,单调队列解决滑动窗口问题;还有常用数据结构的操作,比如链表、树、二叉堆。
二叉堆概览
在BST中删除一个数
完全二叉树的节点个数
如何使用单调栈解题
单调队列
反转链表前N个节点
本章包含一些常用的算法技巧,比如前缀和、回溯思想、位操作、双指针、如何正确书写二分查找等等。
回溯算法秒杀数独问题
快慢指针的常见算法
算法常用操作n&(n-1)
优化解法
FloodFill算法概念
拓展延伸:自动魔棒工具和扫雷
区间交集问题
信封嵌套
三门问题
8说了,本章都是高频面试题,配合前面的动态规划系列,祝各位马到成功!
如何用BFS算法秒杀各种智力题
如何高效解决接雨水问题
如何同时寻找缺失和重复的元素
如何判断回文链表
如何在无限序列中随机抽取元素
如何调度考生的座位
Union-Find算法详解
Union-Find算法应用
一行代码就能解决的算法题
二分查找高效判定子序列
Linux的进程、线程、文件描述符是什么
关于Linux shell你必须知道的
Linux shell的实用小技巧
一文看懂session和cookie
加密算法的前身今世
Git/SQL/正则表达式的在线练习平台
这份算法刷题宝典【Table of Contents】文档共有562页,需要完整版的朋友,可以点赞此文关注小编,【见下图】来获取! !
目录
(Σ( ° △ °|||)︴汗)大概1470+,就不一一例出了,望大家理解
说到LeetCode,作为一个程序员来说,应该不陌生,近几年参加面试都会提到它。国内外的程序员用它刷题主要是为了面试。据历史记载,这个网站2011年就成立了,马上就要到自己10周年的生日了。每周举行周赛,双周赛,月赛,在有限时间内编码,确实非常能考验人的算法能力。一些大公司赞助冠名的比赛获得前几名除了有奖品,还能直接拿到内推的机会。
本来天真的认为,把LeetCode所有题都完整刷一遍,就可以完整这本书了。经过事实证明,确实是天真了。因为LeetCode每天都会增加新题,有时候工作忙了,刷题进度就完全追不上题目更新的速度了。而且以我当前的刷题速度,一年才完成500+, 一年LeetCode也会更新400+多题,要起码5~10年才能把所有的题目刷完。时间太长了。所以先给自己定了一个小目标,500 题就先把书写出来,总结这个阶段的刷题心得,和大家一起交流。要想把LeetCode所有题目都刷完,看来这本书要迭代5~10个版本了(一年迭代一版)。
那么这一章就把已经刷完了的专题都整理一遍。 有相似套路的题目都放在一起,如果想快速面试的话,其实相同的题目刷2、3道就可以了。相同类型的题目非常熟练的情况下,再多刷几道也是做无用功。做到目前为止,笔者认为动态规划是最灵活的类型,这类题目没有一个模板可以给你套用,它也是算法之优雅的地方。笔者认为称它为算法的艺术不为过。动态规划这类型,笔者也还没有刷完,只刷了一部分,还在学习中。
那么就分享一下笔者目前刷过的题,和有相似点的题目吧。
Bit Manipu lation
异或的特性。第136题,第268题,第389题,第421题
Union Find
线段树Segment Tree
友情提示:(内容太长,只截取部分)
并查集UnionFind
友情提示:(内容太长,只截取部分)
这一章就是LeetCode的题解了。笔者目前只刷到608题,题解这里有520题,都已经runtime beats100%了。相差的88题是还没有beats 100%的,笔者还需要继续优化~
题解慢慢更新中,欢迎大家提出更好的解法。点击页面下方的edit,会跳转到github对应的页面markdown中,可以提交你的最优解PR。
让我们在题解的太空遨游吧~
由于内容实在太多,无法一一展现出来,只截取部分内容供大家参考,若你对文中算法宝典感兴趣的话可以关注+转发后,在我的主页私信【666】即可获取到这份算法宝典
1. Two Sum
327. Count of Range Sum
401. Binary Watch
529. Minesweeper
636. Exclusive Time of Functions
812. Largest Triangle Area
850. Rectangle Area lI
968. Binary Tree Cameras
999. Available Ca ptures for Rook
1157. Online Majority Element In Subarray
1252. Cells with Odd Values in a Matrix
这份(算法刷题宝典【LeetCode Cookbook】)文档共1121页,需要完整版的朋友,可以点赞此文关注小编,【见下图】来获取!!
2020年笔者肯定还会继续刷题,因为还没有达到自己的一些目标。可能会朝着1000题奋进,也有可能刷到800题的时候回头开始二刷,三刷。(不达目的不罢休吧~)
努力把数据结构与算法这一块儿给搞明白,相信一定会有不凡的人生!