自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 剑指offer第23题(二叉搜索树的后序遍历)

题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 思想:在二叉搜索树中左子树的节点小于根节点,找到左子树;            在二叉搜索树中左子树的节点小于根节点,找到右子树;            然后判断左子树是不是二叉搜索树,右子树是不是二叉搜索树。 二叉搜索树的特点:左子树的值小于等

2017-10-23 15:49:02 180

原创 剑指offer第22题(从上往下打印二叉树)

题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印。 思想:树的层次遍历,借助队列来完成。 java代码: import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; /** public class TreeNode { int val = 0; TreeNode le

2017-10-22 20:39:03 163

原创 剑指offer第21题(栈的压入、弹出序列)

题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的) 思想:判断一个序列是不是栈的弹出序列的规律:如果下一个弹出的数字刚好是栈顶数字,那么直接弹出

2017-10-21 19:40:55 205

原创 剑指offer第20题(包含min函数的栈)

题目:定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。 java代码: import java.util.Stack; import java.util.Iterator; public class Solution { Stack stack1=new Stack(); public void push(int node) { sta

2017-10-20 16:29:03 166

原创 剑指offer第19题(顺时针打印矩阵)

题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 思想:首先找到打印的条件是row>2*startY,cols>2*startX;然而每次打印的startX=StartY。然后寻找

2017-10-16 20:11:52 186

原创 剑指offer第18题(二叉树的镜像)

题目: 操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7

2017-10-13 11:05:01 158

原创 剑指offer第17题(树的子结构)

题目:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 思想:现根据在树A中查找与根节点的值一样的节点R。紧接着判断树A中以节点R为根节点的子树和树b是不是具有相同的结构。 java代码: /** public class TreeNode { int val = 0; TreeNode left = null; TreeNode rig

2017-10-12 12:32:44 167

原创 剑指offer第16题(合并两个排序的链表)

思想:;链表1的头结点的值小于链表2的头结点的值,因此链表1的头结点是合并后的链表的头结点。在剩余的结点中,链表2的头结点的值小于链表1的头结点的值,因此链表2的头结点是剩余结点的头结点,把这个结点和之前合并好的链表的尾结点链接起来。 注意事项:在非递归版本中,注意在两个链表b比较后,有些链表可能还有剩余,因此还需要继续添加在合并后的链表中。 java代码: /* public clas

2017-10-11 21:45:43 241

原创 剑指offer第15题(反转链表)

题目:输入一个链表,反转链表并输出反转后链表的头结点。 思想:将链表反转即可,值得注意的是如果当前节点指向了前一个节点,我们就需要一个东西存储当前指针之前指向的后一个节点,否则无法在链表中遍历到后一个结点。 java代码: /* public class ListNode { int val; ListNode next = null; ListNode(int

2017-10-10 16:40:22 180

原创 剑指offer第14题(链表中倒数第k个结点)

java思路:第一个指针从链表的头指针开始遍历向前走k-1步,第二个指针保持不变;从第k步开始,第二个指针开始从链表的头指针开始遍历。由于两个指针的距离保持在k-1,因此在第二个指针走到链表尾部的时候,第一个指针在倒数第k个位置。 java代码: /* public class ListNode { int val; ListNode next = null; L

2017-10-09 17:21:55 174

原创 剑指offer第13题(整数数组顺序使奇数位于偶数前面)

思路:由于存储的时候不知道具体奇数和偶数的数目,因而我们采用的是列表。最后将两个列表的内容组合在一起,就可以得到排序后的数组。 java代码: import java.util.ArrayList; import java.util.List; public class Solution {     public void reOrderArray(int [] array) {  

2017-10-09 15:59:16 165

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除