- 博客(12)
- 问答 (1)
- 收藏
- 关注
原创 剑指Offer--二叉搜索树的后续遍历序列
题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。解析:二叉搜索树又叫二叉排序树。它的特点是,根节点左边的节点都小于根节点,根节点右边的节点都大于根节点,所以的子节点也遵循这个规律。知道这些,在解这道题目的时候,首先自己写一个二叉搜索树,将它的后续遍历序列写出来。会发现最后一个元素是根节点,而根节点会将前面
2017-05-12 22:16:27 309
原创 剑指Offer--层序遍历二叉树
题目:层序遍历二叉树,即从上往下打印二叉树,每层从左往右;解析:这道题目并不难,只是比较常用的一个问题,因为树形结构的多种遍历方法,我想以后会有很多使用的机会,所以借此收藏一下。以下的实现方法也是最常用的一种,就是用一个队列来存储每一层的节点,然后输出,完成层序遍历。因为队列的特点是先进先出,所以父节点会比子节点先进队列,也好久先输出父节点import java.util.*;/**public
2017-05-12 22:06:40 349
原创 剑指Offer--栈的压人与弹出序列
题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的) 解析:这道题目主要采取的是模拟的思想来解决的。即通过创建一个栈,根据压入序列来压入数据,根据弹出
2017-05-12 21:59:18 213
原创 剑指Offer --树的子结构
题目:输入两个二叉树A,B判断B是不是A的子结构。解析:针对树这种数据结构的题目,大多数都是根据树的遍历为基础来展开的。这道题目 也是这样的一个套路。从根节点开始判断,如果A树的根节点和B树相同,再比较左右子节点,再以左右子节点为根节点进行递归,如果最终达到B的叶子节点,都没有不同的节点,则B是A的子结构。如果发现有不同节点,则回到A树,遍历到下一个节点,继续比较。代母实现如下。/**publi
2017-05-12 21:46:33 209
原创 全排列算法
一.递归法问题:全排列问题及给出一个序列如{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 281
原创 剑指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 173
原创 剑指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 320
原创 剑指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 188
原创 剑指offer--重建二叉树
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。解析:已知树的先序遍历和中序遍历,需要我们重建这个二叉树,其实大家都知道三种顺序遍历,我们只用只要其中两个就可以重建这个二叉树了.拿到这道题先分析一下,不用代码
2017-05-04 16:02:51 226
空空如也
opencv项目出现pdb文件无法打开与符号无法加载问题(已添加服务器)
2016-05-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人