<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[哇咔咔的升级之路~]]></title><description><![CDATA[2333333333333333333333333333333]]></description><link>https://blog.youkuaiyun.com/u010760034</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u010760034]]></copyright><item><title><![CDATA[剑指offer 16 正则表达式匹配]]></title><link>https://blog.youkuaiyun.com/u010760034/article/details/83987345</link><guid>https://blog.youkuaiyun.com/u010760034/article/details/83987345</guid><author>u010760034</author><pubDate>Mon, 12 Nov 2018 10:12:35 +0800</pubDate><description><![CDATA[请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符，而'*'表示它前面的字符可以出现任意次（包含0次）。 在本题中，匹配是指字符串的所有字符匹配整个模式。例如，字符串&quot;aaa&quot;与模式&quot;a.a&quot;和&quot;ab*ac*a&quot;匹配，但是与&quot;aa.a&quot;和&quot;ab*a&quot;均不匹配

解法：注意题目中说的出现0次，例如ab*aa若*代表出现0次的话，则表示为字符串aaa。分析题目一共...]]></description><category></category></item><item><title><![CDATA[剑指offer 15 删除链表的节点]]></title><link>https://blog.youkuaiyun.com/u010760034/article/details/83987054</link><guid>https://blog.youkuaiyun.com/u010760034/article/details/83987054</guid><author>u010760034</author><pubDate>Mon, 12 Nov 2018 09:57:58 +0800</pubDate><description><![CDATA[题目一：给定单向链表的头指针和一个节点指针，定义一个函数在O(1)的时间内删除该节点

解法：O（1）的时间删除单向链表中的一个节点，题目关键在于它给了你一个节点指针，而且这个节点指针指向的 节点就是需要删除的那个节点。基于这个理解，我们就可以在O(1)的时间内删除，假设待删除的节点为i，i的下一个节点为j,我们可以将j的内容复制到i然后将 i-&amp;gt;next = j-&amp;gt;next即可实现删...]]></description><category></category></item><item><title><![CDATA[剑指offer 14 数值的整数次方]]></title><link>https://blog.youkuaiyun.com/u010760034/article/details/83986630</link><guid>https://blog.youkuaiyun.com/u010760034/article/details/83986630</guid><author>u010760034</author><pubDate>Mon, 12 Nov 2018 09:38:17 +0800</pubDate><description><![CDATA[给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

解法： 首先明确下图的公式



 所以我们可以使用递归去求解这个问题，同时要注意当指数为负数时候对结果的影响


class Solution {
public:
	double Power(double base, int exponent) 
	{
		bool flag_of_...]]></description><category></category></item><item><title><![CDATA[剑指offer 13 二进制中1的个数]]></title><link>https://blog.youkuaiyun.com/u010760034/article/details/83752584</link><guid>https://blog.youkuaiyun.com/u010760034/article/details/83752584</guid><author>u010760034</author><pubDate>Mon, 05 Nov 2018 17:13:04 +0800</pubDate><description><![CDATA[ 输入一个整数，输出该数二进制表示中1的个数。其中负数用补码表示。

解法：十进制的数表示为二进制的数，当我们将这个数减1 的时候，观察到最右边的一个1会变成0，如果它右边有0的话就全变成了1，类似我们做减法的那种借位，此时我们将减1之后的数与原数进行与运算，因为左边的数并没有改变，因此与运算并没有改变高位的数值，只是将最右边的1变成了0，我们只需要数进行了多少次这样的运算就代表有多少个1.

但...]]></description><category></category></item><item><title><![CDATA[剑指offer 12 剪绳子]]></title><link>https://blog.youkuaiyun.com/u010760034/article/details/83752234</link><guid>https://blog.youkuaiyun.com/u010760034/article/details/83752234</guid><author>u010760034</author><pubDate>Mon, 05 Nov 2018 16:46:38 +0800</pubDate><description><![CDATA[题目一：给你一根长度为n的绳子，请把绳子剪成m段 (m和n都是整数，n&amp;gt;1并且m&amp;gt;1)每段绳子的长度记为k[0],k[1],...,k[m].请问k[0]*k[1]*...*k[m]可能的最大乘积是多少？例如，当绳子的长度为8时，我们把它剪成长度分别为2,3,3的三段，此时得到的最大乘积是18

解法：每一次我们下刀剪绳子都把绳子分成了两段，一段为i ，一段为n-i，因此我们可以写成如...]]></description><category></category></item><item><title><![CDATA[剑指offer 11 机器人的运动范围]]></title><link>https://blog.youkuaiyun.com/u010760034/article/details/83716812</link><guid>https://blog.youkuaiyun.com/u010760034/article/details/83716812</guid><author>u010760034</author><pubDate>Sun, 04 Nov 2018 16:28:32 +0800</pubDate><description><![CDATA[地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动，每一次只能向左，右，上，下四个方向移动一格，但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如，当k为18时，机器人能够进入方格（35,37），因为3+5+3+7 = 18。但是，它不能进入方格（35,38），因为3+5+3+8 = 19。请问该机器人能够达到多少个格子？ 

解法：类似上一道题，回溯寻找，但是这道题的边界条件...]]></description><category></category></item><item><title><![CDATA[剑指offer 10 矩阵中的路径]]></title><link>https://blog.youkuaiyun.com/u010760034/article/details/83589911</link><guid>https://blog.youkuaiyun.com/u010760034/article/details/83589911</guid><author>u010760034</author><pubDate>Wed, 31 Oct 2018 20:20:09 +0800</pubDate><description><![CDATA[题目描述

请设计一个函数，用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始，每一步可以在矩阵中向左，向右，向上，向下移动一个格子。如果一条路径经过了矩阵中的某一个格子，则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一条字符串&quot;bcced&quot;的路径，但是矩阵中不包含&quot;abcb&quot;路径，因为字...]]></description><category></category></item><item><title><![CDATA[剑指offer 9.旋转数组的最小数字]]></title><link>https://blog.youkuaiyun.com/u010760034/article/details/83508357</link><guid>https://blog.youkuaiyun.com/u010760034/article/details/83508357</guid><author>u010760034</author><pubDate>Mon, 29 Oct 2018 17:15:30 +0800</pubDate><description><![CDATA[把一个数组最开始的若干个元素搬到数组的末尾，我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转，输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转，该数组的最小值为1。 NOTE：给出的所有元素都大于0，若数组大小为0，请返回0。

解法：最简单的方法，遍历整个数组，即可找到最小值，但是时间复杂度为O（n），而且没有利用到旋转数组的特性。我们观察到旋转...]]></description><category></category></item><item><title><![CDATA[剑指offer 8.跳台阶]]></title><link>https://blog.youkuaiyun.com/u010760034/article/details/83349318</link><guid>https://blog.youkuaiyun.com/u010760034/article/details/83349318</guid><author>u010760034</author><pubDate>Wed, 24 Oct 2018 19:38:41 +0800</pubDate><description><![CDATA[一只青蛙一次可以跳上1级台阶，也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法（先后次序不同算不同的结果）。

解法：可以看作斐波那契数列的另一种行式，对于n大于2的台阶，它可以从n-1级台阶的方法 中跳1阶 即可到达，也可以从n-2级台阶的方法中跳2阶到达。所以上一个n级台阶的跳法f[n] = f[n-1]+f[n-2].但是注意n=2时候f[n]=2,而不是f[1]+f[0] = 1...]]></description><category></category></item><item><title><![CDATA[剑指offer 7.斐波那契数列]]></title><link>https://blog.youkuaiyun.com/u010760034/article/details/83349047</link><guid>https://blog.youkuaiyun.com/u010760034/article/details/83349047</guid><author>u010760034</author><pubDate>Wed, 24 Oct 2018 19:15:31 +0800</pubDate><description><![CDATA[大家都知道斐波那契数列，现在要求输入一个整数n，请你输出斐波那契数列的第n项（从0开始，第0项为0）。

n&amp;lt;=39

解法：可以利用递归调用来写，但是时间和空间消耗大，观察斐波那契数列生成方式，中间一些值是重复计算的，我们可以用vector保存起来，就避免了重复计算。时间复杂度O(n).

关于vector的使用：不能直接赋值例如：result[i] = 1;程序编译会报错vector s...]]></description><category></category></item><item><title><![CDATA[剑指offer 6.用两个栈实现队列]]></title><link>https://blog.youkuaiyun.com/u010760034/article/details/83346249</link><guid>https://blog.youkuaiyun.com/u010760034/article/details/83346249</guid><author>u010760034</author><pubDate>Wed, 24 Oct 2018 16:50:55 +0800</pubDate><description><![CDATA[用两个栈来实现一个队列，完成队列的Push和Pop操作。 队列中的元素为int类型。

解法：栈的特性为先进后出，而队列的进出顺序却是先进先出，插入元素时候我们很好理解，就直接入栈就好了，关键是删除元素时候，原本第一个进去的元素应该第一个出来，可是作为栈只能弹出最后一个进入的元素，这个时候我们就需要用到第二个栈stack2,将stack1中的元素挨个弹出然后压入stack2中，这样从stack2中...]]></description><category></category></item><item><title><![CDATA[剑指offer 5.二叉树的下一个结点]]></title><link>https://blog.youkuaiyun.com/u010760034/article/details/83313297</link><guid>https://blog.youkuaiyun.com/u010760034/article/details/83313297</guid><author>u010760034</author><pubDate>Tue, 23 Oct 2018 19:44:35 +0800</pubDate><description><![CDATA[给定一个二叉树和其中的一个结点，请找出中序遍历顺序的下一个结点并且返回。注意，树中的结点不仅包含左右子结点，同时包含指向父结点的指针。

 解法：画出二叉树的结构图和利用具体的例子找出规律如下：

1.如果一个子树有右子树，那它的下一个节点就是右子树的最左节点

2.如果一个子树没有右子树，它是父节点的左子节点，那它的下一个节点就是父节点

3.如果一个节点既没有右子树，它还是父节点的右子节点，那...]]></description><category></category></item><item><title><![CDATA[剑指offer 4.重建二叉树]]></title><link>https://blog.youkuaiyun.com/u010760034/article/details/83275483</link><guid>https://blog.youkuaiyun.com/u010760034/article/details/83275483</guid><author>u010760034</author><pubDate>Mon, 22 Oct 2018 17:03:39 +0800</pubDate><description><![CDATA[输入某二叉树的前序遍历和中序遍历的结果，请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6}，则重建二叉树并返回。


class Solution {
public:
    TreeNode* reConstructBinaryTree(vector&amp;lt;int&amp;gt; ...]]></description><category></category></item><item><title><![CDATA[剑指offer 3.从尾到头打印链表]]></title><link>https://blog.youkuaiyun.com/u010760034/article/details/83275449</link><guid>https://blog.youkuaiyun.com/u010760034/article/details/83275449</guid><author>u010760034</author><pubDate>Mon, 22 Oct 2018 17:01:48 +0800</pubDate><description><![CDATA[输入一个链表，按链表值从尾到头的顺序返回一个ArrayList。

解法：根据题目要求，我们可以想到栈的特性符合题目要求！ 


class Solution {
public:
    vector&amp;lt;int&amp;gt; printListFromTailToHead(ListNode* head) {
        std::stack &amp;lt;ListNode*&amp;gt; nodes;
		...]]></description><category></category></item><item><title><![CDATA[剑指offer 2.替换空格]]></title><link>https://blog.youkuaiyun.com/u010760034/article/details/83275349</link><guid>https://blog.youkuaiyun.com/u010760034/article/details/83275349</guid><author>u010760034</author><pubDate>Mon, 22 Oct 2018 16:58:46 +0800</pubDate><description><![CDATA[请实现一个函数，将一个字符串中的每个空格替换成“%20”。

例如，当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

解法： 


class Solution {
public:
	void replaceSpace(char *str,int length) {
    if (str == nullptr || length &amp;lt; 0)
	...]]></description><category></category></item><item><title><![CDATA[剑指offer 1.二维数组中的查找]]></title><link>https://blog.youkuaiyun.com/u010760034/article/details/83275243</link><guid>https://blog.youkuaiyun.com/u010760034/article/details/83275243</guid><author>u010760034</author><pubDate>Mon, 22 Oct 2018 16:55:42 +0800</pubDate><description><![CDATA[在一个二维数组中（每个一维数组的长度相同），每一行都按照从左到右递增的顺序排序，每一列都按照从上到下递增的顺序排序。请完成一个函数，输入这样的一个二维数组和一个整数，判断数组中是否含有该整数。

 解法：可以从上到下从左到右进行遍历，但是只要的时间复杂度就肯定上去了，我们可以画图观察一下题目所说的二维矩阵：首先从矩阵右上角开始查找，如果目标值小于该数字，那么即可删掉该数字所在的列，如果目标值大于该...]]></description><category></category></item><item><title><![CDATA[LeetCode 122. 买卖股票的最佳时机 II]]></title><link>https://blog.youkuaiyun.com/u010760034/article/details/83275151</link><guid>https://blog.youkuaiyun.com/u010760034/article/details/83275151</guid><author>u010760034</author><pubDate>Mon, 22 Oct 2018 16:49:06 +0800</pubDate><description><![CDATA[给定一个数组，它的第 i 个元素是一支给定股票第 i 天的价格。

设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易（多次买卖一支股票）。

注意：你不能同时参与多笔交易（你必须在再次购买前出售掉之前的股票）。

示例 1:


输入: [7,1,5,3,6,4]
输出: 7
解释: 在第 2 天（股票价格 = 1）的时候买入，在第 3 天（股票价格 = 5）的时候卖出, 这笔...]]></description><category></category></item><item><title><![CDATA[LeetCode 121. 买卖股票的最佳时机]]></title><link>https://blog.youkuaiyun.com/u010760034/article/details/83275004</link><guid>https://blog.youkuaiyun.com/u010760034/article/details/83275004</guid><author>u010760034</author><pubDate>Mon, 22 Oct 2018 16:45:52 +0800</pubDate><description><![CDATA[给定一个数组，它的第 i 个元素是一支给定股票第 i 天的价格。

如果你最多只允许完成一笔交易（即买入和卖出一支股票），设计一个算法来计算你所能获取的最大利润。

注意你不能在买入股票前卖出股票。

示例 1:


输入: [7,1,5,3,6,4]
输出: 5
解释: 在第 2 天（股票价格 = 1）的时候买入，在第 5 天（股票价格 = 6）的时候卖出，最大利润 = 6-1 = 5 。
  ...]]></description><category></category></item><item><title><![CDATA[Leetcode905. 按奇偶排序数组]]></title><link>https://blog.youkuaiyun.com/u010760034/article/details/83274857</link><guid>https://blog.youkuaiyun.com/u010760034/article/details/83274857</guid><author>u010760034</author><pubDate>Mon, 22 Oct 2018 16:39:10 +0800</pubDate><description><![CDATA[给定一个非负整数数组 A，返回一个由 A 的所有偶数元素组成的数组，后面跟 A 的所有奇数元素。

你可以返回满足此条件的任何数组作为答案。

示例：


输入：[3,1,2,4]
输出：[2,4,3,1]
输出 [4,2,3,1]，[2,4,1,3] 和 [4,2,1,3] 也会被接受。


提示：

 

  0&amp;lt;= A.length &amp;lt;= 5000
	  0&amp;lt;=A[i]&amp;l...]]></description><category></category></item><item><title><![CDATA[Leetcode15 三数之和]]></title><link>https://blog.youkuaiyun.com/u010760034/article/details/83274662</link><guid>https://blog.youkuaiyun.com/u010760034/article/details/83274662</guid><author>u010760034</author><pubDate>Mon, 22 Oct 2018 16:29:40 +0800</pubDate><description><![CDATA[给定一个包含 n 个整数的数组 nums，判断 nums 中是否存在三个元素 a，b，c ，使得 a + b + c = 0 ？找出所有满足条件且不重复的三元组。

注意：答案中不可以包含重复的三元组。


例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4]，

满足要求的三元组集合为：
[
  [-1, 0, 1],
  [-1, -1, 2]
]

解法：首先对数组排序...]]></description><category></category></item></channel></rss>