<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[火山君的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/volcano1995</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; volcano1995]]></copyright><item><title><![CDATA[【算法】最长回文子串]]></title><link>https://blog.youkuaiyun.com/volcano1995/article/details/101170164</link><guid>https://blog.youkuaiyun.com/volcano1995/article/details/101170164</guid><author>volcano1995</author><pubDate>Sun, 22 Sep 2019 21:05:21 +0800</pubDate><description><![CDATA[题目

    回文串（palindromic string）是指这个字符串无论从左读还是从右读，所读的顺序是一样的。简而言之，回文串是左右对称的。所谓最长回文子串问题，是指对于一个给定的母串。从所有的为回文串的子串a, ded, cdedc, bcdecdb中；找出最长的那一个bcdecdb。但是该如何判断子串是否回文然后找出最长者呢？

解答

一、暴力求解（时间复杂度O(n^3)）
...]]></description><category></category></item><item><title><![CDATA[【HEXO】github + hexo 搭建个人的博客]]></title><link>https://blog.youkuaiyun.com/volcano1995/article/details/101150569</link><guid>https://blog.youkuaiyun.com/volcano1995/article/details/101150569</guid><author>volcano1995</author><pubDate>Sun, 22 Sep 2019 15:01:32 +0800</pubDate><description><![CDATA[使用 github + Hexo 搭建个人的博客，这里记录一下几个常见命令：

1、安装：npm install -g hexo

2、创建一个新目录，然后在对应的文件夹下面初始化：hexo init

3、测试启动：

   hexo g # 生成

   hexo s # 启动服务，开启本地预览服务。

4、上传到github：hexo d







常用命令：

hex...]]></description><category></category></item><item><title><![CDATA[【剑指Offer】斐波那契数列之青蛙跳台阶]]></title><link>https://blog.youkuaiyun.com/volcano1995/article/details/100181044</link><guid>https://blog.youkuaiyun.com/volcano1995/article/details/100181044</guid><author>volcano1995</author><pubDate>Sun, 01 Sep 2019 11:39:58 +0800</pubDate><description><![CDATA[题目 问题一：一只青蛙一次可以跳上1级台阶，也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 问题二：一只青蛙一次可以跳上1级台阶，也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 分析 分析问题一： 将跳法总数记为f(n)，可以知道f(1)=1，f(2)=2。当n&gt;2时，第一次跳1级的话，还有f(n-1)种跳法；第一次跳2级的话，还有f(n-2)种跳法，所以可以推得f(n)=f(n-1)+f(n-2)，即为斐波那契数列。所以，用斐波那契的解法来解即可。 分]]></description><category></category></item><item><title><![CDATA[【剑指Offer】翻转单词顺序列]]></title><link>https://blog.youkuaiyun.com/volcano1995/article/details/100175166</link><guid>https://blog.youkuaiyun.com/volcano1995/article/details/100175166</guid><author>volcano1995</author><pubDate>Sat, 31 Aug 2019 20:57:52 +0800</pubDate><description><![CDATA[题目

    牛客最近来了一个新员工Fish，每天早晨总是会拿着一本英文杂志，写些句子在本子上。同事Cat对Fish写的内容颇感兴趣，有一天他向Fish借来翻看，但却读不懂它的意思。例如，“student. a am I”。后来才意识到，这家伙原来把句子单词的顺序翻转了，正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行，你能帮助他么？

样例输入...]]></description><category></category></item><item><title><![CDATA[【剑指offer】包含min函数的栈]]></title><link>https://blog.youkuaiyun.com/volcano1995/article/details/100174173</link><guid>https://blog.youkuaiyun.com/volcano1995/article/details/100174173</guid><author>volcano1995</author><pubDate>Sat, 31 Aug 2019 17:03:22 +0800</pubDate><description><![CDATA[题目

    定义栈的数据结构，请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中，调用min、push及pop的时间复杂度都是O（1）。

分析

   新建一个数据栈，一个辅助栈。

   入栈：

   数据栈就是正常压入即可。

   而对于辅助栈，如果每次都能把最小元素压入辅助栈，那么就能保证辅助栈的栈顶一直是最小元素。所以压入的时候...]]></description><category></category></item><item><title><![CDATA[【剑指offer】栈的压入、弹出序列]]></title><link>https://blog.youkuaiyun.com/volcano1995/article/details/100172462</link><guid>https://blog.youkuaiyun.com/volcano1995/article/details/100172462</guid><author>volcano1995</author><pubDate>Sat, 31 Aug 2019 14:38:24 +0800</pubDate><description><![CDATA[题目

    输入两个整数序列，第一个序列表示栈的压入顺序，请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序，序列4,5,3,2,1是该压栈序列对应的一个弹出序列，但4,3,5,1,2就不可能是该压栈序列的弹出序列。（注意：这两个序列的长度是相等的）

分析

    解决这个问题的方法是简历一个辅助栈，把输入序列...]]></description><category></category></item><item><title><![CDATA[【剑指offer】二叉树中和为某一值的路径]]></title><link>https://blog.youkuaiyun.com/volcano1995/article/details/100156363</link><guid>https://blog.youkuaiyun.com/volcano1995/article/details/100156363</guid><author>volcano1995</author><pubDate>Fri, 30 Aug 2019 16:06:19 +0800</pubDate><description><![CDATA[题目

    输入一棵二叉树和一个整数，打印出二叉树中结点值的和为输入整数的所有路径。从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。

分析

  几个要点

    1、由于路径是从根节点出发到叶节点，也就是说路径总是以根节点为起始节点，因此我们需要遍历根节点。在树的前序、后序、中序遍历中，只有前序遍历是首先访问根节点的。

    2、由于二叉树没有...]]></description><category></category></item><item><title><![CDATA[【Java】代理模式]]></title><link>https://blog.youkuaiyun.com/volcano1995/article/details/96016230</link><guid>https://blog.youkuaiyun.com/volcano1995/article/details/96016230</guid><author>volcano1995</author><pubDate>Mon, 15 Jul 2019 20:28:54 +0800</pubDate><description><![CDATA[代理模式

代理模式的定义：代理模式给某一个对象提供一个代理对象，并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。

1）静态代理

第一步：创建服务类接口


public interface BuyCar {
    public void BuyCar();
}

第二步：实现服务接口


public class BuyCarImpl implements Bu...]]></description><category></category></item><item><title><![CDATA[解决安装pyspider过程中，ERROR: Command "python setup.py egg_info" failed with error code 10 问题]]></title><link>https://blog.youkuaiyun.com/volcano1995/article/details/95862788</link><guid>https://blog.youkuaiyun.com/volcano1995/article/details/95862788</guid><author>volcano1995</author><pubDate>Sun, 14 Jul 2019 10:29:19 +0800</pubDate><description><![CDATA[今天在安装pyspider的时候遇到问题，报错：



解决方法：

到https://www.lfd.uci.edu/~gohlke/pythonlibs/上找到PycURL，根据python版本，电脑多少位，下载对应的软件包，放到你python安装的文件夹中。

之后，再用pip2 install pycurl-7.43.0.3-cp27-cp27m-win_amd64.whl安装该软件包。
...]]></description><category></category></item><item><title><![CDATA[【Java】抽象类与接口]]></title><link>https://blog.youkuaiyun.com/volcano1995/article/details/95340619</link><guid>https://blog.youkuaiyun.com/volcano1995/article/details/95340619</guid><author>volcano1995</author><pubDate>Wed, 10 Jul 2019 15:34:53 +0800</pubDate><description><![CDATA[抽象类：

包含抽象方法的类称为抽象类，但并不意味着抽象类中只能有抽象方法，它和普通类一样，同样可以拥有成员变量和普通的成员方法。注意，抽象类和普通类的主要有三点区别：

1）抽象方法必须为public或者protected（因为如果为private，则不能被子类继承，子类便无法实现该方法），缺省情况下默认为public。

2）抽象类不能用来创建对象；

3）如果一个类继承于一个抽象类，则子类必...]]></description><category></category></item><item><title><![CDATA[【记录一下】]]></title><link>https://blog.youkuaiyun.com/volcano1995/article/details/93756493</link><guid>https://blog.youkuaiyun.com/volcano1995/article/details/93756493</guid><author>volcano1995</author><pubDate>Wed, 26 Jun 2019 17:30:24 +0800</pubDate><description><![CDATA[今天犯了一个愚蠢的错误：

我居然两个字节数组比较是否相等，我写的是if (数组1==数组2.)。。。这直接比较地址了好吗，怎么可能一样？？？
]]></description><category></category></item><item><title><![CDATA[【Git使用】IDEA与git整合]]></title><link>https://blog.youkuaiyun.com/volcano1995/article/details/93381501</link><guid>https://blog.youkuaiyun.com/volcano1995/article/details/93381501</guid><author>volcano1995</author><pubDate>Sun, 23 Jun 2019 15:51:57 +0800</pubDate><description><![CDATA[1、首选，在IDEA中设置git，在File--&gt;Setting---&gt;Version Controller---Git---Path to Git executable选择你的git安装后的git.exe，像我的就是

点击Test会出现：



2、然后再IDEA中设置Github，File--&gt;Setting-&gt;Version Control--&gt;GibH...]]></description><category></category></item><item><title><![CDATA[【剑指Offer】51、数组中的逆序对]]></title><link>https://blog.youkuaiyun.com/volcano1995/article/details/92393509</link><guid>https://blog.youkuaiyun.com/volcano1995/article/details/92393509</guid><author>volcano1995</author><pubDate>Sun, 16 Jun 2019 15:50:24 +0800</pubDate><description><![CDATA[题目

    在数组中的两个数字如果前面一个数字大于后面的数字，则这两个数字组成一个逆序对。输入一个数组，求出这个数组中的逆序对的总数。

思路

    类似于归并排序。

    我们用两个指针分别指向两个子数组的末尾，并每次比较两个指针指向的数字。

    p1指向的数字大于p2指向的数字，存在逆序对。逆序对的数目 = 第二个数组中剩余数字的个数。将p1指...]]></description><category></category></item><item><title><![CDATA[【剑指offer】37、序列化二叉树]]></title><link>https://blog.youkuaiyun.com/volcano1995/article/details/90903321</link><guid>https://blog.youkuaiyun.com/volcano1995/article/details/90903321</guid><author>volcano1995</author><pubDate>Wed, 05 Jun 2019 16:24:33 +0800</pubDate><description><![CDATA[题目

    请实现两个函数，分别用来序列化和反序列化二叉树。

解题思路

  通过先序遍历实现序列化和反序列化：

1、假设序列化的结果字符串为str，初始的时候str=""。

  先序遍历二叉树，如果遇到null节点，就在str的末尾加上“#!”，“#”表示这个节点为空，节点的值不存在，"!"表示值的结束。

  如果遇到不为空的节点，假设节点的值为3，就在st...]]></description><category></category></item><item><title><![CDATA[【剑指offer】33、二叉搜索树的后续遍历序列]]></title><link>https://blog.youkuaiyun.com/volcano1995/article/details/90898458</link><guid>https://blog.youkuaiyun.com/volcano1995/article/details/90898458</guid><author>volcano1995</author><pubDate>Wed, 05 Jun 2019 13:14:41 +0800</pubDate><description><![CDATA[题目

    输入一个整数数组，判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true，否则返回false。假设输入的数组的任意两个数字都互不相同。

思路

   二叉树后序遍历数组的最后一个数为根结点，剩余数字中，小于根结点的数字（即左子树部分）都排在前面，大于根结点的数字（即右子树部分）都排在后面。根据遍历数组的这个特性，可以编写出一个递归函数，用于实现题目所...]]></description><category></category></item><item><title><![CDATA[【剑指offer】32、从上往下打印二叉树]]></title><link>https://blog.youkuaiyun.com/volcano1995/article/details/90763659</link><guid>https://blog.youkuaiyun.com/volcano1995/article/details/90763659</guid><author>volcano1995</author><pubDate>Tue, 04 Jun 2019 15:19:47 +0800</pubDate><description><![CDATA[题目

（一）从上往下打印出二叉树的每个结点，同一层的结点按照从左到右的顺序打印。

（二）从上到下按层打印二叉树，同一层的结点按从左到右的顺序打印，每一层打印到一行。

（三）请实现一个函数按照之字形顺序打印二叉树，即第一行按照从左到右的顺序打印，第二层按照从右到左的顺序打印，第三行再按照从左到右的顺序打印，其他行以此类推。

思路

1、每次打印一个节点的时候，如果该节点有子节点，则把该节点的...]]></description><category></category></item><item><title><![CDATA[【Java源码】优先队列PriorityQueue]]></title><link>https://blog.youkuaiyun.com/volcano1995/article/details/90756296</link><guid>https://blog.youkuaiyun.com/volcano1995/article/details/90756296</guid><author>volcano1995</author><pubDate>Mon, 03 Jun 2019 17:58:58 +0800</pubDate><description><![CDATA[优先队列的作用：   

    优先队列的作用是保证每次取出的元素是队列中权值最小的。Java中，优先队列ProrityQueue的本质是通过一颗完全二叉树来实现小根堆。

    其中，父节点和子节点之间的关系是：


leftNo = parentNo*2+1

rightNo = parentNo*2+2

parentNo = (nodeNo-1)/2

优先队...]]></description><category></category></item><item><title><![CDATA[【剑指offer】数据流中的中位数]]></title><link>https://blog.youkuaiyun.com/volcano1995/article/details/90754930</link><guid>https://blog.youkuaiyun.com/volcano1995/article/details/90754930</guid><author>volcano1995</author><pubDate>Mon, 03 Jun 2019 17:24:05 +0800</pubDate><description><![CDATA[题目

    如何得到一个数据流中的中位数？如果从数据流中读出奇数个数值，那么中位数就是所有数值排序之后位于中间的数值。

如果从数据流中读出偶数个数值，那么中位数就是所有数值排序之后中间两个数的平均值。



思路

    采用大根堆+小根堆结合的方法，且满足：

   两个堆中的数据数目差不能超过1，这样可以使中位数只会出现在两个堆的交接处；

   ...]]></description><category></category></item><item><title><![CDATA[【剑指offer】28、对称的二叉树]]></title><link>https://blog.youkuaiyun.com/volcano1995/article/details/90729732</link><guid>https://blog.youkuaiyun.com/volcano1995/article/details/90729732</guid><author>volcano1995</author><pubDate>Sat, 01 Jun 2019 16:21:12 +0800</pubDate><description><![CDATA[题目

　 请实现一个函数，用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样，那么它是对称的。

思路

   针对前序遍历定义一种遍历算法，先遍历父节点，再遍历它的右子节点，最后遍历它的左子节点。

   通过比较二叉树的前序遍历和对称前序遍历序列来判断二叉树是不是对称的。

测试用例

    1.功能测试（对称二叉树；结构不对称二叉树；结构对称但值不对...]]></description><category></category></item><item><title><![CDATA[【剑指offer】26、树的子结构]]></title><link>https://blog.youkuaiyun.com/volcano1995/article/details/90728842</link><guid>https://blog.youkuaiyun.com/volcano1995/article/details/90728842</guid><author>volcano1995</author><pubDate>Sat, 01 Jun 2019 14:37:02 +0800</pubDate><description><![CDATA[题目　

　　输入两棵二叉树A和B，判断B是不是A的子结构。

思路

　　1）先对A树进行遍历，找到与B树的根结点值相同的结点R；这一步相当于就是树的遍历。

　　2）判断A树中以R为根结点的子树是否包含和B树一样的结构。同样采用递归的思想：如果节点R的值和树B的根节点不同，则以R为根节点的子树和树B肯定不具有相同的节点；如果他们的值相同，则递归地判断他们各自的左右节点的值是否相同。递归的终止条...]]></description><category></category></item></channel></rss>