剑指offer
凉白开水的温度
这个作者很懒,什么都没留下…
展开
-
剑指offer之25:二叉树中和为某一值的路径
题目:输入一棵二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径,从树的根节点开始往下一直到叶节点所经过的结点形成一条路径。结点定义:struct BinaryTreeNode{ int val; BinaryTreeNode* left; BinaryTreeNode* right;};分析:举例,如下的二叉树,二叉树和整数22,打印出...原创 2018-07-17 12:04:42 · 155 阅读 · 0 评论 -
剑指offer之28:字符串的排列
题目:输入一个字符串,打印出该字符串中字符的所以排列。例如输入字符串abc,则打印出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab、cba。分析:把这个字符串看成由两部分组成:第一部分为它的第一个字符,第二部分是后面的所有字符。首先,求出所有可能出现在第一个位置的字符,即把第一个字符和后面所有的字符交换。然后,固定第一个字符,求后面所有字符的排列...原创 2018-07-17 20:50:58 · 133 阅读 · 0 评论 -
剑指offer之29:数组中出现次数超过一半的数字
题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。分析:数组中有一个数字出现的次数超过数组长度的一半,也就是它出现的次数比其他所有数字出现次数的和还要多。在遍历数组时,保存两个值:一个是数组中的数字,一个是次数。当遍历...原创 2018-07-18 11:37:27 · 164 阅读 · 0 评论 -
剑指offer·之30:最小的K个数
题目:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。分析:利用堆排序,O(N logK),适合处理海量数据(1) 遍历输入数组,将前k个数插入到推中;(利用multiset来做为堆的实现)用前k个数字来建立大顶堆,而后拿后面的后面的n-k个元素依次与大顶堆中的最大值(即堆顶)元素比较,(2) 继续从...原创 2018-07-28 15:19:49 · 160 阅读 · 0 评论 -
剑指offer之6:重建二叉树
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。分析:前序遍历中,第一个数字是根节点的值;中序遍历根节点的值在中间,左子树的结点的值位于根节点的值的左边,而右子树的结点的值在根节点的右边。...原创 2018-07-29 11:36:11 · 134 阅读 · 0 评论 -
剑指offer之18:树的子结构
题目:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)分析:查找树A中是否存在和树B结构一样的子树,1、首先设置标志位result = false,因为一旦匹配成功result就设为true,剩下的代码不会执行,如果匹配不成功,默认返回false2、递归思想,如果根节点相同则递归调用DoesTree1HaveTree2(),如果...原创 2018-08-01 12:00:26 · 221 阅读 · 0 评论