剑指Offer66题的总结、目录
剑指Offer每日6题系列终于在今天全部完成了,从2017年12月27日到2018年2月27日,历时两个月的写作,其中绝大部分的时间不是花在做题上,而是花在写作上,这个系列不适合大神,大牛,这个系列是我专门为那些初识算法,数据结构的同学和对基础算法,基本数据结构不熟练的同学而写的。
里面所有的博文,我尽量避开生僻的一些概念,尽量用生活中的语言和例子来解释一些原理,因此在学术上可能不太严谨,但是,管他呢,你们能理解就好;
绝大部分的题目我都用了两种以上的方法,有的甚至5到6个方法去解决,尝试从不同的角度去解决一个问题,这个能力是我们大家都要去学习的,当然了,我也不是神,并不能想到所有的这些方法,也很感谢牛客网讨论区中的一些同学,有些题目他们提供了很精妙的思路,更感谢牛客网能为这些题目提供后台数据,使得我们的代码可以验证是否正确;
当然了,我的这些博文中的方法肯定不是完全全面的,肯定还有一些好的方法我还没有了解到,如果大家有更好的点子,可以在对应博客中的评论区留言。
至于为什么想做这个系列,原因就是觉得网上的很多资料(包括博客)对新手不是很友好,因为自己也是从新手过来的,所以很能理解新手在看到”很明显可以看出这个题用二分”这类句子的绝望(“哪里很明显了,我怎么看不出”),因此,我较详细地把“很明显”这类字眼展开了来讲,所以如果厉害的同学看到我的博文会觉得我说的很啰嗦,但是对于新手而言,说得透彻点终归是没有坏处的。
互联网公司的招聘,比较看重算法与数据结构,因此掌握这些东西可以让你在笔试、面试中发挥地更好,机会永远是留给那些有准备的人,我相信,如果你踏踏实实刷完这66道题,并且把每一道题的两种解法都理解透并熟练写出,那么你至少能在笔试、面试中超过50%
的人。而且,有良好的算法、数据结构基础对自己以后的提升也是有着莫大的帮助。这也是国际,国内的一线互联网公司为什么如此注重ACM比赛经验,比赛获奖的原因。
如果你对博文中的一些地方不是很理解,或者觉得有错,可以留言。我会在不忙的时候解答,因为我也是和你们一样,在不断接触新的知识。
下面的这个目录既可以帮助你找到每个题目的提交的地方,也可以帮助你更快地找到每道题目的解答。
同时,可以关注下剑指Offer66题这个专栏。所有的博文按顺序已经陈列在其中了。
-
- 第一题:调整数组顺序使奇数位于偶数前面
- 第二题:链表中倒数第k个结点
- 第三题:反转链表
- 第四题:合并两个排序的链表
- 第五题:树的子结构
- 第六题:二叉树的镜像
-
- 第一题:顺时针打印矩阵
- 第二题:包含min函数的栈
- 第三题:栈的压入、弹出序列
- 第四题:从上往下打印二叉树
- 第五题:二叉搜索树的后序遍历序列
- 第六题:二叉树中和为某一值的路径
-
- 第一题:复杂链表的复制
- 第二题:二叉搜索树与双向链表
- 第三题:字符串的排列
- 第四题:数组中出现次数超过一半的数字
- 第五题:最小的K个数
- 第六题:连续子数组的最大和
-
- 第一题:整数中1出现的次数
- 第二题:把数组排成最小的数
- 第三题:丑数
- 第四题:第一个只出现一次的字符位置
- 第五题:数组中的逆序对
- 第六题:两个链表的第一个公共结点
-
- 第一题:数字在排序数组中出现的次数
- 第二题:二叉树的深度
- 第三题:平衡二叉树
- 第四题:数组中只出现一次的数字
- 第五题:和为S的连续正数序列
- 第六题:和为S的两个数字
-
- 第一题:左旋转字符串
- 第二题:翻转单词顺序列
- 第三题:扑克牌顺子
- 第四题:孩子们的游戏(圆圈中最后剩下的数)
- 第五题:求1+2+3+…+n
- 第六题:不用加减乘除做加法
-
- 第一题:链表中环的入口结点
- 第二题:删除链表中重复的结点
- 第三题:二叉树的下一个结点
- 第四题:对称的二叉树
- 第五题:按之字形顺序打印二叉树
- 第六题:把二叉树打印成多行