1. 前言
剑指offer专栏终于完成了!在这期间由于博主工作上占据了很多时间,而且平时刷题和编辑文章的时间并不多,实际上剑指offer我都刷了三遍了。春招刷了两遍,近期又刷了一遍(因为近期想出一个专栏)我的目的其实就是想用通俗的方式把题解讲明白,几乎每道题我都有画图来解释。当然也有很多解法是借鉴过来的,但我都是自己理解透彻后在画图解释的。而且也指出了引用之处。大部分我都采用了两个或两个以上的题解,包括通俗的暴力解(暴力解是思考过程中最先能想到的题解,只不过时间复杂度或空间复杂度较高)
2. 算法有多重要?
- 1. 编程内功的修炼
《倚天屠龙记》大家都应该看过吧,男主无忌哥哥的开挂人生,从学会了《九阳神功》之后,便开始学什么都能很快的学会,被关在密室的几个时辰就学会了《乾坤大魔移》
实则我们可以把算法和数据结构看成《九阳神功》把内功心法学好,自然学什么武功都不会很难
这里做了个简单的比喻而已,不喜勿喷!!!- 2. 去国内一流互联网公司的必要条件
国内一流互联网公司BAT,TMD等等,在技术招聘中几乎都会考察程序员的算法功底,尤其是非CS专业,毕竟还是大厂还是很看重基础的。以宇宙条为首,最喜欢考leetcode的算法题,(这里称为宇宙条,是因为头条的面试官真的很喜欢考察算法。。。有时候题难度甚至达到hard级别)想去头条工作的同学,千万要准备好,当然博主曾经参加过的网易,快手等面试也有考算法,而且基本都是手写。可见算法在大公司的重视程度极其之高!- 3. 算法和数据结构非常的实用
JDK底层源码涉及到许多基本数据结构,包括Redis底层数据结构等等
3. 专栏适用于哪些人?
首先你要会基本的Java语法以及熟练使用Java语言进行编程。
而且这个专栏并不适用于大神,大牛。对于一些初识算法、数据结构的同学来说还是比较不错的选择
如果你处于在找工作的时期,这个专栏对你也会有很多帮助,剑指offer的题用来面试算法的频率还是比较高
4. 刷题网站
1. leetcode
leetcode是一个英文的在线coding的刷题网站,站内经常会举办一些coding比赛,在程序员业界还是广受欢迎的。国外的大厂Google Amazon Facebook等公司面试也会出站内的相关原题。详细了解请戳
leetcode
2. 领扣(leetcode中文网)
领扣说白就是中文版本的leetcode,是有国内上海的一家公司进行维护的,适用于一些英文不太好的程序员,免去了翻译不通而造成题意不理解。详细了解请戳
领扣
3. 牛客网
牛客网对于应届生找工作来说还是很友好的,在春招或秋招中牛客网会提供企业的在线考试(包括Coding)现在国内一些大厂也经常跟牛客网合作进行人才招聘,如:美团 腾讯 网易 快手等等。而且站内提供了许多功能,比如程序员生活,笔试题解,面试面经等等。详细了解请戳
牛客网
5. 目录
下面的目录可以快速帮你找到每道题的位置,并且在每道题中都有online coding(在线编程)
题目的目录顺序是按照牛客网中的专栏一致,每道题解中的在线编程也是牛客网的链接
1~10题
11~20题
- 11.数值的整数次方
- 12.调整数组顺序使奇数位于偶数前面
- 13.链表中倒数第k个结点
- 14.反转链表
- 15.合并两个排序的链表
- 16.树的子结构
- 17.二叉树的镜像
- 18.顺时针打印矩阵
- 19.包含min函数的栈
- 20.栈的压入,弹出序列
21~30题
- 21.从上往下打印二叉树
- 22.二叉搜索树的后序遍历序列
- 23.二叉树中和为某一值的路径
- 24.复杂链表的复制
- 25.二叉搜索树与双向链表
- 26.字符串的全排列
- 27.数组中出现次数超过一半的数字
- 28.最小的k个数
- 29.连续子数组的最大和
- 30.整数中1出现的次数
31~40题
- 31.把数组排成最小数
- 32.丑数
- 33.第一次只出现一次的字符
- 34.数组中的逆序对
- 35.两个链表的第一个公共节点
- 36.数字在排序数组中出现的次数
- 37.二叉树的深度
- 38.平衡二叉树
- 39.数组中只出现一次的数字
- 40.和为S的连续正数序列
41~50题
- 41.和为S的两个数
- 42.左旋转字符串
- 43.反转单词顺序列
- 44.扑克牌顺子
- 45.孩子们的游戏(圈中最后剩下的数)
- 46.求1+2+3+…+n
- 47.不用加减乘除做加法
- 48.把字符串转换成整数
- 49.数组中重复的数字
- 50.构建乘积数组
51~60题
- 51.正则表达式匹配
- 52.表示数值的字符串
- 53.字符流中第一个不重复的字符
- 54.链表中环的入口节点
- 55.删除链表中重复的结点
- 56.二叉树的下一个结点
- 57.对称的二叉树
- 58.按之字形顺序打印二叉树
- 59.把二叉树打印成多行
- 60.序列化二叉树
61~65题
6. 总结
做题时是痛苦的,当你把一道题解出来的时候就会有些许成就感,当你踏踏实实的做个200+的题,相信你能从容的面对所有面试中的算法题。也希望这个专栏能够成为你的< 九阳神功>
当然了,如果有任何相关的问题也可以给我留言