剑指 Offer 50 道经典算法题视频讲解

January 22, 2019
作者:Hawstein
出处:http://hawstein.com/posts/jian-zhi-offer-algocasts-episodes.html
声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明作者及出处。



正文

「剑指 Offer」是何海涛写的一本算法面试书,书中精选了 50 道常见的程序员面试题,这些题目偏向中低难度,是入门上手不错的选择。另外这些题目基本上在各大 OJ 上也都有,可以非常方便地提交自己的实现进行练手。

如果刚开始练习算法题目,「剑指 Offer」是个不错的切入点。以下是 AlgoCasts 上对应这 50 道题目的讲解视频(持续更新)。

注意:讲解视频中的题目可能和剑指 Offer 书上的题目有些许不同,不保证 100% 一致。 另外,在我看来,有些题目练习的意义不大,已经使用删除线移除。

二维数组中的查找

行列递增的二维数组搜索 - leetcode 240 | lintcode 38

替换空格

TODO - lintcode 212 | nowcoder

从尾到头打印链表

TODO - nowcoder

重建二叉树

用前序和中序遍历序列构建二叉树 - leetcode 105 | lintcode 73

用两个栈实现队列

TODO - leetcode 232 | lintcode 40

旋转数组的最小数字

TODO - leetcode 153 | lintcode 159

斐波那契数列

TODO - leetcode 509 | lintcode 366

二进制中 1 的个数

二进制中 1 的个数 - leetcode 191 | lintcode 1332

数值的整数次方

数值的 n 次方 - leetcode 50 | lintcode 428

打印 1 到最大的 n 位数

TODO

在 O(1) 时间删除链表节点

TODO - leetcode 237 | lintcode 372

调整数组顺序使奇数位于偶数前面

TODO

链表中倒数第 k 个节点

移除单链表倒数第 n 个节点 - leetcode 19 | lintcode 174

反转链表

反转单链表 - leetcode 206 | lintcode 35

合并两个排序的链表

合并两个有序链表 - leetcode 21 | lintcode 165

树的子结构

TODO - leetcode 572 | lintcode 1165

二叉树的镜像

翻转二叉树 - leetcode 226 | lintcode 175

顺时针打印矩阵

TODO

包含 min 函数的栈

带有 min 函数的栈 - leetcode 155 | lintcode 12

栈的压入弹出序列

TODO - leetcode 946

从上往下打印二叉树

二叉树的层序遍历 - leetcode 102 | lintcode 69

二叉搜索树的后序遍历序列

TODO - nowcoder

二叉树中和为某一值的路径

TODO - leetcode 113 | lintcode 246

复杂链表的复制

含随机指针的链表拷贝 - leetcode 138 | lintcode 105

二叉搜索树与双向链表

TODO - leetcode 426 | lintcode 378

字符串的排列

数组的全排列 - leetcode 46 | lintcode 15

数组中出现次数超过一半的数字

数组中超过一半的数字 - leetcode 169 | lintcode 46

最小的 k 个数

数组中第 K 大的元素 - leetcode 215 | lintcode 5

连续子数组的最大和

连续子序列的最大和 - leetcode 53 | lintcode 41

从 1 到 n 整数中 1 出现的次数

TODO

把数组排成最小的数

TODO

丑数

第 n 个丑数 - leetcode 264 | lintcode 4

第一个只出现一次的字符

TODO - leetcode 387 | lintcode 209

数组中的逆序对

TODO - leetcode 493 | lintcode 532

两个链表的第一个公共节点

链表的相交节点 - leetcode 160 | lintcode 380

数字在排序数组中出现的次数

有序数组中查找数字的开始和结束下标 - leetcode 34 | lintcode 61

二叉树的深度

二叉树的最大深度 - leetcode 104 | lintcode 97

平衡二叉树

判断二叉树是否平衡 - leetcode 110 | lintcode 93

数组中只出现一次的数字

TODO - leetcode 260 | lintcode 84

和为 s 的两个数字

有序数组中求和为给定值的两个数 - leetcode 167 | lintcode 608

和为 s 的连续正数序列

TODO

翻转单词顺序

TODO - leetcode 151 | lintcode 53

左旋转字符串

旋转数组 - leetcode 189 | lintcode 1334

n 个骰子的点数

TODO

扑克牌的顺子

TODO

圆圈中最后剩下的数字

TODO

求 1+2+..+n

这题可以无视。

不用加减乘除做加法

不用+/-求两数之和 - leetcode 371

把字符串转成整数

字符串转整数 - leetcode 8 | lintcode 54

树中两个节点的最低公共祖先

TODO - leetcode 236 | lintcode 88