- 博客(6)
- 收藏
- 关注
原创 剑指Offer 面试题30:包含min函数的栈 Java代码实现
题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min,push及pop的时间复杂度都是O(1) 这道题第一反应就是用一个额外的变量存储栈中的最小元素,但是仔细一想,在取出这个最小元素之后呢?怎么得到下一个最小元素。也就是说,在压入这个最小元素之前,我们还要把次小元素保存起来。仔细分析过程,可以这样做,把每次的最小元素都保存起来,放在另外一个辅
2017-12-26 21:17:59 274
原创 剑指Offer 面试题29:顺时针打印 Java代码实现
题目:输入一个矩阵按照从外向里以顺时针的顺序依次打印出每一个数字。 把矩阵想象成若干个圈,可以用一个循环来打印矩阵,每一次打印矩阵中的一个圈。此外还需要给出循环结束的条件,我们总是从左上角开始打印,开始的下标依次为(0,0)、(1,1)、(2,2)...举几个栗子,可以得到循环终止条件为,cols>start*2并且rows>start*2。 需要注意的是,最后一圈有可能退化成只有一行、只有一
2017-12-26 20:59:59 225
原创 剑指Offer 面试题28:判断一棵二叉树是否镜对称 Java代码实现
题目:请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的. public static boolean isSymmetrical(TreeNode root){ if(root==null) return true; return isSym(root.left,root.right); } private sta
2017-12-26 20:50:19 193
原创 剑指Offer 面试题27:二叉树的镜像 Java代码实现
题目:输入一个二叉树,输出该二叉树的镜像。 分析树的镜像的定义,就是前序遍历二叉树,如果存在左右子树,就交换左右节点。方便用递归实现。 public static void mirrorTree(TreeNode root){ //递归结束条件 if(root==null) return; if(root.left==null&&root.right==null) re
2017-12-07 16:49:56 238 2
原创 剑指Offer 面试题26:树的子结构 Java代码实现
题目:输入两棵二叉树A和B,判断B是不是A的子结构。 解题思路分为两步: 1.在树A中找到节点值跟B根节点值相同的节点R 2.判断A中以R为根节点的子树是否包含和树B一样的结构 //递归hasSubtree其实就是前序遍历了root1 //如果发现root1中存在节点的值等于root2的根节点 那么调用doesTree1HaveTree2进行判断 public static bool
2017-12-07 16:27:25 180
原创 剑指Offer 面试题25:合并两个排序的链表(递归+非递归) Java代码实现
题目:输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。 不断比较两个链表中的节点,将小的添加到新的链表中,直到有一个链表全部添加完后,直接把另一个链表剩下的拼接到新链表后。要注意空链表的处理。 非递归的代码: //采用不带头结点的链表 非递归实现 public static ListNode merge(ListNode list1,ListNode list2
2017-12-07 16:09:19 1326
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人