自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

devY的博客

一只蚂蚁

  • 博客(12)
  • 问答 (1)
  • 收藏
  • 关注

原创 剑指Offer--二叉搜索树的后续遍历序列

题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。解析:二叉搜索树又叫二叉排序树。它的特点是,根节点左边的节点都小于根节点,根节点右边的节点都大于根节点,所以的子节点也遵循这个规律。知道这些,在解这道题目的时候,首先自己写一个二叉搜索树,将它的后续遍历序列写出来。会发现最后一个元素是根节点,而根节点会将前面

2017-05-12 22:16:27 308

原创 剑指Offer--层序遍历二叉树

题目:层序遍历二叉树,即从上往下打印二叉树,每层从左往右;解析:这道题目并不难,只是比较常用的一个问题,因为树形结构的多种遍历方法,我想以后会有很多使用的机会,所以借此收藏一下。以下的实现方法也是最常用的一种,就是用一个队列来存储每一层的节点,然后输出,完成层序遍历。因为队列的特点是先进先出,所以父节点会比子节点先进队列,也好久先输出父节点import java.util.*; /** public

2017-05-12 22:06:40 348

原创 剑指Offer--栈的压人与弹出序列

题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的) 解析:这道题目主要采取的是模拟的思想来解决的。即通过创建一个栈,根据压入序列来压入数据,根据弹出

2017-05-12 21:59:18 212

原创 剑指Offer --树的子结构

题目:输入两个二叉树A,B判断B是不是A的子结构。解析:针对树这种数据结构的题目,大多数都是根据树的遍历为基础来展开的。这道题目 也是这样的一个套路。从根节点开始判断,如果A树的根节点和B树相同,再比较左右子节点,再以左右子节点为根节点进行递归,如果最终达到B的叶子节点,都没有不同的节点,则B是A的子结构。如果发现有不同节点,则回到A树,遍历到下一个节点,继续比较。代母实现如下。/** publi

2017-05-12 21:46:33 208

原创 全排列算法

一.递归法问题:全排列问题及给出一个序列如{a,b,c}输出它的全排列,一共有3!=6种排法.及一个n个元素的序列全排列有n!个排列方法.那么如何得到每种排列呢?解析:首先拿到一个题目先用数学的思想去考虑怎么解决.我们在纸上模拟这道题目的过程,其实就是我们算法实现的过程,只不过需要我们通过程序代码使其形成一种闭环的操作,让它自己迭代得到最终的结果.全排列问题是递归的一种典型问题.举个例子{1,2,3

2017-05-08 15:57:26 405 1

原创 idea

记录一下自己的一些小想法,慢慢来实现~问题分析:目前的Android应用的使用,首先第一步是用户点击应用,启动应用,然后在应用内部寻找所需要的功能或者是内容.整个过程中用户至少会进行2次以上的无用操作,或者是重复操作.对于常用的功能,用户都需要进行点开应用,点击功能才能获得所需要的内容或者服务.在这个告诉发展的时代,时间就是金钱,时间就是体验.如何使得手机应用的服务不只是体现在应用图标,启动器的后面

2017-05-06 13:59:31 280

原创 剑指offer-- 反转链表

题目:反转链表,输入一个链表,输入该链表的反转解析:这道题没有什么思想,就是最基本的链表运算,但是牵扯了很多指针的变换,所以,经常拿出来考,大家熟记就好了/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ p

2017-05-04 17:25:44 273

原创 剑指offer--链表倒数第K个节点

题目:输入一个链表,输出该链表中倒数第k个结点。解析:最原始的想法就是先遍历一遍得到这个链表的长度,然后第二次遍历得到第K个节点的.第二种方法的思想很巧妙可以只遍历一次就可以.设置两个指针,先让尾指针向后移动k-1个单位,然后两个指针同时移动,直到尾指针到链表的最后一个节点,那么头指针就指向的是第K个节点./* public class ListNode { int val; Lis

2017-05-04 17:18:29 172

原创 剑指offer--DP类题目汇总

题目:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n<=39.解析:斐波那契数列就是前两个数的和等于第三个数,一个典型的递归思想的数列,所以这道题也是用递归的思想来解决.但是只是递归的话,会产生很多的冗余,因为递归会把每种情况算很多遍,比如算n=5的时候,会把前面n=4.3.2.1所有的情况算一遍得到n=5,而在算n=4的时候,也会计算n=1.2.3的情况这样产生了

2017-05-04 17:01:57 319

原创 剑指offer--旋转数组中的最小数

题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。解析:这道题我最开始的思路是直接从前往后遍历,找到后一个数字小于前一个数字.这个数字就是最小的那个数字.通过后发

2017-05-04 16:28:17 248

原创 剑指offer--两个栈实现队列

题目:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。解析:栈和队列的弹出序列是相反的这个两个数据结构的性质有关,一个是先进先出,一个是先进后出.所以如果用两个栈,相当于把数据的顺序倒了两次最后使得起顺序和队列一样,这是原理很简单,但是如何实现呢,这里需要注意的点有两个: 1. 弹出栈不为空不能向里面压入数据 2. 压入栈必须每次将所有的数据都压入弹出栈i

2017-05-04 16:13:14 186

原创 剑指offer--重建二叉树

题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。解析:已知树的先序遍历和中序遍历,需要我们重建这个二叉树,其实大家都知道三种顺序遍历,我们只用只要其中两个就可以重建这个二叉树了.拿到这道题先分析一下,不用代码

2017-05-04 16:02:51 226

空空如也

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

TA关注的人

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