剑指offer
杨缘一
不断接近,终将到达
展开
-
剑指offer-定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
包含min函数的栈 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。思路: 借助一个辅助栈minStack,与原始栈的大小一样。 初始时为原始栈的第一个元素,然后依次比较,如果原始栈中有比minStack栈顶元素小的元素就直接入栈,如果没有则把minStack栈顶元素重新入栈public class StackMinElementSolution { private原创 2017-11-08 23:27:31 · 992 阅读 · 0 评论 -
剑指offer-重建二叉树 由前序和中序遍历序列建树
重建二叉树 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。public class Solution { public TreeNode reConstructBinaryTree(int [] pre原创 2017-11-01 21:28:53 · 318 阅读 · 0 评论 -
剑指offer-栈的压入弹出序列
题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)分析借助一个辅助栈,先按照压入顺序依次把元素入栈,先把第一个元素1入栈,然后比较弹出序列的第一个原创 2017-11-10 23:32:02 · 206 阅读 · 0 评论 -
剑指offer-从上往下打印出二叉树的每个节点,同层节点从左至右打印。
题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。分析即二叉树的层次遍历 借助队列实现代码public class Solution { public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { ArrayList<Integer> result = new ArrayList<>();原创 2017-11-11 09:52:36 · 362 阅读 · 0 评论 -
剑指offer-树的子结构 判断二叉树B是不是A的子结构
题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)使用递归的方法public class Solution { public boolean HasSubtree(TreeNode root1,TreeNode root2) { boolean result=false; if(root1!=null原创 2017-11-03 10:20:01 · 291 阅读 · 0 评论 -
剑指offer-跳台阶
实质还是斐波那契数列问题题目一 跳台阶 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 思路: 假设f(n)是n个台阶跳的次数 f(1) =1 f(2) = f(1)+1 = 2 对于f(n)而言,有两种方式,跳一步或者两步到达第n阶,即f(n)=f(n-1)+f(n-2)代码:public int JumpFloor(int target)原创 2017-11-03 11:22:03 · 191 阅读 · 0 评论 -
剑指offer-求1+2+3+...+n
求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。方法1:使用try{}catch{}public int Sum_Solution(int n) { try { int[] array = new int[n-2]; return n+Sum_So原创 2017-11-06 10:36:15 · 497 阅读 · 0 评论