上一页 1 2 3 4 5 6 7 8 ··· 11 下一页
摘要: 题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为 9 的数组 {1,2,3,2,2,2,5,4,2}。由于数字 2 在数组中出现了 5 次,超过数组长度的一半,因此输出 2。如果不存在则输出 0。 解法 解法一 利用快排中的 partition 思想。 数组 阅读全文
posted @ 2019-07-23 20:56 亦海 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 例图: 解法: 由于是二叉搜索树,因此中序遍历的结果就是排序的。 中序遍历利用栈来实现。遍历时,前一个结点的 right 指向后一个结点,后一个结点的 left 指向前一个结 阅读全文
posted @ 2019-07-22 20:34 亦海 阅读(80) 评论(0) 推荐(0) 编辑
摘要: 题目描述 输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前) 解法 在树的前、中、后序三种遍历方式中,只有前序遍历是首先访问根结点的。 所以要按前序 阅读全文
posted @ 2019-07-19 15:11 亦海 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 样例: 解法 序列的最后一个元素是二叉搜索树的根节点。 在序列中从左到右找到根节点的左子树(比根节点小)、右子树(比根节点大)。 如果右子树中出现比根 阅读全文
posted @ 2019-07-17 15:09 亦海 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 样例: 解法 借助队列先进先出的特性, 先将根节点进入队列。 队头元素出队,将值存入 list,判断该元素是否有左/右子树,有的话依次进入队列中。队列为空时结束。 代码实现: 阅读全文
posted @ 2019-07-16 21:22 亦海 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。 假设压入栈的所有数字均不相等。 例如序列 1,2,3,4,5 是某栈的压入顺序,序列 4,5,3,2,1 是该压栈序列对应的一个弹出序列,但 4,3,5,1,2 就不可能是该压栈序列的弹出序列。 注意 阅读全文
posted @ 2019-07-15 15:14 亦海 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 题目描述 设计一个支持 push,pop,top 等操作并且可以在 O(1) 时间内检索出最小元素的堆栈。 push(x)–将元素x插入栈中 pop()–移除栈顶元素 top()–得到栈顶元素 getMin()–得到栈中最小元素 样例 解法 定义两个stack,一个为存放最小数的序列的辅助栈。 压栈 阅读全文
posted @ 2019-07-15 14:29 亦海 阅读(1609) 评论(0) 推荐(0) 编辑
摘要: 题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 样例 解法: 顺时针打印一圈,圈子越变越小,圈子变小一圈时,左上角坐标加一与右下角坐标减一。 所以,利用这两个坐标(tR, tC)、(dR, dC)来缩小圈子。 其中在一圈子中: 先向右打印 curC -> dC 再向下打印 阅读全文
posted @ 2019-07-15 13:59 亦海 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 题目描述 输入一个二叉树,将它变换为它的镜像。 解法 将根结点的左右孩子互换,之后递归左右孩子。 阅读全文
posted @ 2019-07-14 11:50 亦海 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 题目描述输入两棵二叉树 A、B,判断 B 是不是 A 的子结构。 我们规定空树不是任何树的子结构。 样例 树 A: 8 / \ 8 7 / \ 9 2 / \ 4 7 树 B: 8 / \ 9 2 返回 true ,因为 B 是 A 的子结构。 解法递归方式遍历: 在树 A 中找到和树 B 的根结点 阅读全文
posted @ 2019-07-14 11:21 亦海 阅读(181) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 11 下一页