剑指Offer
活在梦里丶
学渣的逆袭之路~
展开
-
剑指Offer——面试题6:重构二叉树
题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 分析 在二叉树前序遍历序列中,第一个数字总是树的根节点的值。但在中序遍历中,根节点的值在序列中间。所有的左子树都位于根原创 2017-05-02 13:02:06 · 346 阅读 · 0 评论 -
剑指Offer——面试题7:用两个栈实现队列
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 思路 当stack2中不为空时,在stack2中的栈顶元素是最先进入队列的元素,直接弹出。 如果stack2为空,把stack1中的元素逐个压入stack2.由于先进入队列的元素被压到stack1的低端,经过弹出和压入之后,就处于stack2的顶端,可以直接弹出。原创 2017-05-02 16:09:04 · 333 阅读 · 0 评论 -
剑指Offer——面试题8:旋转数组的最小数字
题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 分析 通过观察可以发现旋转之后的数组可以划分为两个递增序列的子数组,而前面原创 2017-05-02 23:09:10 · 408 阅读 · 0 评论 -
剑指Offer——面试题22:栈的压入、弹出序列
题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的) 分析 如果,下一个弹出的数字刚好原创 2017-05-05 09:19:35 · 445 阅读 · 0 评论