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

Hawstein | January 22, 2019

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

如果刚开始练习算法题目,「剑指 Offer」是个不错的切入点。以下是 AlgoCasts 上对应这 50 道题目的讲解视频。以下内容也放在了 GitHub 上:剑指 Offer 50 题视频讲解

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

二维数组中的查找

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

替换空格

替换空格

从尾到头打印链表

从尾到头打印链表

重建二叉树

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

用两个栈实现队列

使用栈实现队列 - leetcode 232 | lintcode 40

旋转数组的最小数字

旋转有序数组的最小值 - leetcode 153 | lintcode 159

斐波那契数列

第 n 个斐波那契数 - leetcode 509 | lintcode 366

二进制中 1 的个数

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

数值的整数次方

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

打印 1 到最大的 n 位数

打印 1 到最大的 n 位数

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

删除链表节点 - leetcode 237 | lintcode 372

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

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

链表中倒数第 k 个节点

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

反转链表

反转单链表 - leetcode 206 | lintcode 35

合并两个排序的链表

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

树的子结构

树 t 是否等于树 s 的子树 - leetcode 572 | lintcode 1165 // 注意:视频中这道题目只是类似,但不相同,区别在于「子结构」和「子树」。

二叉树的镜像

翻转二叉树 - leetcode 226 | lintcode 175

顺时针打印矩阵

矩阵的螺旋遍历 - leetcode 54 | lintcode 374

包含 min 函数的栈

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

栈的压入弹出序列

验证入栈出栈序列 - leetcode 946

从上往下打印二叉树

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

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

验证二叉搜索树的前序遍历序列 - lintcode 1307 // 相似题

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

二叉树中和为给定值的路径 - 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 出现的次数

整数 1 到 n 中 1 出现的次数 - leetcode 233 | lintcode 1312

把数组排成最小的数

把数组排成最小的数

丑数

第 n 个丑数 - leetcode 264 | lintcode 4

第一个只出现一次的字符

第一个只出现一次的字符 - leetcode 387 | lintcode 209

数组中的逆序对

逆序对 | lintcode 532

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

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

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

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

二叉树的深度

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

平衡二叉树

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

数组中只出现一次的数字

只出现一次的两个数字 - leetcode 260 | lintcode 84

和为 s 的两个数字

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

和为 s 的连续正数序列

和为 s 的连续正数序列

翻转单词顺序

翻转单词顺序 - leetcode 151 | lintcode 53

左旋转字符串

旋转数组 - leetcode 189 | lintcode 1334

n 个骰子的点数

n 个骰子的点数

扑克牌的顺子

扑克牌的顺子

圆圈中最后剩下的数字

圆圈中最后剩下的数字

求 1+2+..+n

求 1+2+..+n

不用加减乘除做加法

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

把字符串转成整数

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

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

二叉树中节点的最近公共祖先 - leetcode 236 | lintcode 88

声明:自由转载-非商用-非衍生-保持署名 | 创意共享3.0许可证,转载请注明作者及出处
出处:http://hawstein.com/2019/01/22/jian-zhi-offer-algocasts-episodes/