二叉搜索树的后序遍历序列算法详解

题目描述 输入一个非空整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。   //每次都找左右树...

二叉树中和为某一值的路径算法详解

题目描述 输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。   解:这题其实有限制条件,...

设计跳表算法详解

不使用任何库函数,设计一个跳表。 跳表是在 O(log(n)) 时间内完成增加、删除、搜索操作的数据结构。跳表相比于树堆与红黑树,其功能与性能相当,并且跳表的代码长度相较下更短,其设计思想与链表相似。 例如,一个跳表包含 [30, 40...

复杂链表的复制算法详解

题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题...

二叉搜索树与双向链表算法详解

题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。   解:这道题其实是一道中序遍历的题,需要注意的是把当前子树最...

有序矩阵中第K小的元素算法详解

给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素。请注意,它是排序后的第 k 小元素,而不是第 k 个不同的元素。   示例: matrix = [ [ 1, 5,...

最长重复子数组算法详解

给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。   示例: 输入:A: [1,2,3,2,1]B: [3,2,1,4,7]输出:3解释:长度最长的公共子数...

面试题恢复空格详解

哦,不!你不小心把一个长篇文章中的空格、标点都删掉了,并且大写也弄成了小写。像句子"I reset the computer. It still didn’t boot!"已经变成了"iresetthecomputeritstilldidn...

合并K个排序链表详解

合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 示例: 输入:[  1->4->5,  1->3->4,  2->6]输出: 1-&...

C++11中静态局部变量初始化的线程安全性详解

在C++标准中,是这样描述的(在标准草案的6.7节中): such a variable is initialized the first time control passes through its declaration; s...