摘要: 插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 算法步骤: 1)将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。 2)从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素... 阅读全文
posted @ 2016-08-19 10:19 27House 阅读(589) 评论(0) 推荐(0) 编辑
摘要: 【题目】输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是,返回true,否则输出false。假设输入的数组的任意两个数字都互不相同。 【思路】首先我们得知道什么是二叉搜索树,二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右... 阅读全文
posted @ 2016-05-05 16:29 27House 阅读(351) 评论(0) 推荐(0) 编辑
摘要: 【题目】输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。 【思路】借用一个辅助的栈,遍历压栈顺序,先讲第一个放入栈中,这里是1,然后判断栈顶元素是不是出栈顺序的第一个元素,这里是4,... 阅读全文
posted @ 2016-05-04 19:23 27House 阅读(1758) 评论(0) 推荐(0) 编辑
摘要: 【题目】输入两颗二叉树A,B,判断B是不是A的子结构。 【思路】要查找树A中是否存在和树B结构一样的子树,可以分成两步: 第一步在树A中找到和B的根节点的值一样的结点R; 第二步再判断树A中以R为根结点的子树是不是包含和树B一样的结构。 第一步在树A中查找与根结点的值一样的结点,这实际上就是树的遍历。递归调用HasSubTree遍历二叉树A。如果发现某一结点的值和树B的头结... 阅读全文
posted @ 2016-05-04 11:10 27House 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 【题】矩形覆盖 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 分析: 当n = 1 f(1) = 1 我们第一次填充只能横着放,所以我们只有一种方法, 当n = 2 f(1) = 2 我们第一次横着放是一种,第一次竖着放也是一种可能,所有有两种方法 当n = 3 f(3) = f(2) + f(1) 如果... 阅读全文
posted @ 2016-04-21 20:56 27House 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 算法 阅读全文
posted @ 2016-04-21 20:25 27House 阅读(213) 评论(0) 推荐(0) 编辑