<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[hang404的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/hang404</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hang404]]></copyright><item><title><![CDATA[LeetCode 88. 合并两个有序数组 Merge Sorted Array（C语言）]]></title><link>https://blog.youkuaiyun.com/hang404/article/details/85807687</link><guid>https://blog.youkuaiyun.com/hang404/article/details/85807687</guid><author>hang404</author><pubDate>Fri, 04 Jan 2019 23:18:34 +0800</pubDate><description><![CDATA[题目描述：
给定两个有序整数数组 nums1 和 nums2，将 nums2 合并到 nums1 中，使得 num1 成为一个有序数组。
说明:

初始化 nums1 和 nums2 的元素数量分别为 m 和 n。
你可以假设 nums1 有足够的空间（空间大小大于或等于 m + n）来保存 nums2 中的元素。

示例:

输入:
nums1 = [1,2,3,0,0,0], m = 3
nu...]]></description><category></category></item><item><title><![CDATA[LeetCode 86. 分隔链表 Partition List（C语言）]]></title><link>https://blog.youkuaiyun.com/hang404/article/details/85807418</link><guid>https://blog.youkuaiyun.com/hang404/article/details/85807418</guid><author>hang404</author><pubDate>Fri, 04 Jan 2019 23:13:33 +0800</pubDate><description><![CDATA[题目描述：
给定一个链表和一个特定值 x，对链表进行分隔，使得所有小于 x 的节点都在大于或等于 x 的节点之前。
你应当保留两个分区中每个节点的初始相对位置。
示例:

输入: head = 1-&amp;gt;4-&amp;gt;3-&amp;gt;2-&amp;gt;5-&amp;gt;2, x = 3
输出: 1-&amp;gt;2-&amp;gt;2-&amp;gt;4-&amp;gt;3-&amp;gt;5

题目解答：
方法1：双指针
两个指针分别记录比x大的节...]]></description><category></category></item><item><title><![CDATA[LeetCode 83. 删除排序链表中的重复元素 Remove Duplicates from Sorted List（C语言）]]></title><link>https://blog.youkuaiyun.com/hang404/article/details/85727267</link><guid>https://blog.youkuaiyun.com/hang404/article/details/85727267</guid><author>hang404</author><pubDate>Thu, 03 Jan 2019 22:55:12 +0800</pubDate><description><![CDATA[题目描述：
给定一个排序链表，删除所有重复的元素，使得每个元素只出现一次。
示例 1:

输入: 1-&amp;gt;1-&amp;gt;2
输出: 1-&amp;gt;2

示例 2:

输入: 1-&amp;gt;1-&amp;gt;2-&amp;gt;3-&amp;gt;3
输出: 1-&amp;gt;2-&amp;gt;3

题目解答：
方法1：遍历
拿当前的与下一个进行比较，相等则删除下一个，不等则更新当前节点。
运行时间4ms，代码如下。
/**
 * D...]]></description><category></category></item><item><title><![CDATA[LeetCode 82. 删除排序链表中的重复元素 II Remove Duplicates from Sorted List II（C语言）]]></title><link>https://blog.youkuaiyun.com/hang404/article/details/85726979</link><guid>https://blog.youkuaiyun.com/hang404/article/details/85726979</guid><author>hang404</author><pubDate>Thu, 03 Jan 2019 22:50:27 +0800</pubDate><description><![CDATA[题目描述：
给定一个排序链表，删除所有含有重复数字的节点，只保留原始链表中 没有重复出现 的数字。
示例 1:

输入: 1-&amp;gt;2-&amp;gt;3-&amp;gt;3-&amp;gt;4-&amp;gt;4-&amp;gt;5
输出: 1-&amp;gt;2-&amp;gt;5

示例 2:

输入: 1-&amp;gt;1-&amp;gt;1-&amp;gt;2-&amp;gt;3
输出: 2-&amp;gt;3

题目解答：
方法1：三指针遍历
利用三个指针head,t1,t2...]]></description><category></category></item><item><title><![CDATA[LeetCode 81.搜索旋转排序数组 II Search in Rotated Sorted Array II（C语言）]]></title><link>https://blog.youkuaiyun.com/hang404/article/details/85726376</link><guid>https://blog.youkuaiyun.com/hang404/article/details/85726376</guid><author>hang404</author><pubDate>Thu, 03 Jan 2019 22:40:22 +0800</pubDate><description><![CDATA[题目描述：
假设按照升序排序的数组在预先未知的某个点上进行了旋转。
( 例如，数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。
编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true，否则返回 false。
示例 1:

输入: nums = [2,5,6,0,0,1,2], target = 0
输出: true

示例 2:

输入: nums...]]></description><category></category></item><item><title><![CDATA[LeetCode 80. 删除排序数组中的重复项 II Remove Duplicates from Sorted Array II（C语言）]]></title><link>https://blog.youkuaiyun.com/hang404/article/details/85726013</link><guid>https://blog.youkuaiyun.com/hang404/article/details/85726013</guid><author>hang404</author><pubDate>Thu, 03 Jan 2019 22:33:54 +0800</pubDate><description><![CDATA[题目描述：
给定一个排序数组，你需要在原地删除重复出现的元素，使得每个元素最多出现两次，返回移除后数组的新长度。
不要使用额外的数组空间，你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
示例 1:

给定 nums = [1,1,1,2,2,3],
函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 。
你不需要考虑数组中超出新...]]></description><category></category></item><item><title><![CDATA[LeetCode 79. 单词搜索 Word Search（C语言）]]></title><link>https://blog.youkuaiyun.com/hang404/article/details/85725600</link><guid>https://blog.youkuaiyun.com/hang404/article/details/85725600</guid><author>hang404</author><pubDate>Thu, 03 Jan 2019 22:26:53 +0800</pubDate><description><![CDATA[题目描述：
给定一个二维网格和一个单词，找出该单词是否存在于网格中。
单词必须按照字母顺序，通过相邻的单元格内的字母构成，其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。
示例:

board =
[
[‘A’,‘B’,‘C’,‘E’],
[‘S’,‘F’,‘C’,‘S’],
[‘A’,‘D’,‘E’,‘E’]
]
给定 word = “ABCCED”, ...]]></description><category></category></item><item><title><![CDATA[LeetCode 78. 子集 Subsets（C语言）]]></title><link>https://blog.youkuaiyun.com/hang404/article/details/85649569</link><guid>https://blog.youkuaiyun.com/hang404/article/details/85649569</guid><author>hang404</author><pubDate>Thu, 03 Jan 2019 10:57:35 +0800</pubDate><description><![CDATA[题目描述：
给定一组不含重复元素的整数数组 nums，返回该数组所有可能的子集（幂集）。
说明：解集不能包含重复的子集。
示例:

输入: nums = [1,2,3]
输出:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]

题目解答：
方法1：回溯算法
运行时间ms，代码如下。
/**
 * Return an array of arra...]]></description><category></category></item><item><title><![CDATA[LeetCode 77. 组合 Combinations（C语言）]]></title><link>https://blog.youkuaiyun.com/hang404/article/details/85649196</link><guid>https://blog.youkuaiyun.com/hang404/article/details/85649196</guid><author>hang404</author><pubDate>Thu, 03 Jan 2019 10:30:55 +0800</pubDate><description><![CDATA[题目描述：
给定两个整数 n 和 k，返回 1 … n 中所有可能的 k 个数的组合。
示例:

输入: n = 4, k = 2
输出:
[
[2,4],
[3,4],
[2,3],
[1,2],
[1,3],
[1,4],
]

题目解答：
方法1：回溯算法
循环加递归，记录前边存储的数字，当存储k个即可存储在结果中。
也可以先计算出总共用多少个结果，这样就可以直接给result申请对应大的空...]]></description><category></category></item><item><title><![CDATA[LeetCode 75. 颜色分类 Sort Colors（C语言）]]></title><link>https://blog.youkuaiyun.com/hang404/article/details/85648738</link><guid>https://blog.youkuaiyun.com/hang404/article/details/85648738</guid><author>hang404</author><pubDate>Thu, 03 Jan 2019 10:13:17 +0800</pubDate><description><![CDATA[题目描述：
给定一个包含红色、白色和蓝色，一共 n 个元素的数组，原地对它们进行排序，使得相同颜色的元素相邻，并按照红色、白色、蓝色顺序排列。
此题中，我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。
注意:
不能使用代码库中的排序函数来解决这道题。
示例:

输入: [2,0,2,1,1,0]
输出: [0,0,1,1,2,2]

进阶：

一个直观的解决方案是使用计数排序的两趟扫描算...]]></description><category></category></item><item><title><![CDATA[LeetCode 74. 搜索二维矩阵 Search a 2D Matrix（C语言）]]></title><link>https://blog.youkuaiyun.com/hang404/article/details/85648006</link><guid>https://blog.youkuaiyun.com/hang404/article/details/85648006</guid><author>hang404</author><pubDate>Wed, 02 Jan 2019 23:16:44 +0800</pubDate><description><![CDATA[题目描述：
编写一个高效的算法来判断 m x n 矩阵中，是否存在一个目标值。该矩阵具有如下特性：
每行中的整数从左到右按升序排列。
每行的第一个整数大于前一行的最后一个整数。
示例 1:

输入:
matrix = [
[1,   3,  5,  7],
[10, 11, 16, 20],
[23, 30, 34, 50]
]
target = 3
输出: true

示例 2:

输入:
ma...]]></description><category></category></item><item><title><![CDATA[LeetCode 73. 矩阵置零 Set Matrix Zeroes（C语言）]]></title><link>https://blog.youkuaiyun.com/hang404/article/details/85321737</link><guid>https://blog.youkuaiyun.com/hang404/article/details/85321737</guid><author>hang404</author><pubDate>Fri, 28 Dec 2018 14:37:18 +0800</pubDate><description><![CDATA[题目描述：
给定一个 m x n 的矩阵，如果一个元素为 0，则将其所在行和列的所有元素都设为 0。请使用原地算法。
示例 1:

输入:
[
[1,1,1],
[1,0,1],
[1,1,1]
]
输出:
[
[1,0,1],
[0,0,0],
[1,0,1]
]

示例 2:

输入:
[
[0,1,2,0],
[3,4,5,2],
[1,3,1,5]
]
输出:
[
[0,0,0,0],
[...]]></description><category></category></item><item><title><![CDATA[LeetCode 71. 简化路径 Simplify Path（C语言）]]></title><link>https://blog.youkuaiyun.com/hang404/article/details/85321258</link><guid>https://blog.youkuaiyun.com/hang404/article/details/85321258</guid><author>hang404</author><pubDate>Fri, 28 Dec 2018 14:14:35 +0800</pubDate><description><![CDATA[题目描述：
给定一个文档 (Unix-style) 的完全路径，请进行路径简化。
例如，
path = &quot;/home/&quot;, =&amp;gt; &quot;/home&quot;
path = &quot;/a/./b/../../c/&quot;, =&amp;gt; &quot;/c&quot;
边界情况:

你是否考虑了 路径 = “/…/” 的情况？
在这种情况下，你需返回 “/” 。
此外，路径中也可能包含多个斜杠 ‘/’ ，如 “/home//foo/” 。
...]]></description><category></category></item><item><title><![CDATA[LeetCode 70. 爬楼梯 Climbing Stairs（C语言）]]></title><link>https://blog.youkuaiyun.com/hang404/article/details/85321067</link><guid>https://blog.youkuaiyun.com/hang404/article/details/85321067</guid><author>hang404</author><pubDate>Fri, 28 Dec 2018 14:03:45 +0800</pubDate><description><![CDATA[题目描述：
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢？
注意：给定 n 是一个正整数。
示例 1：

输入： 2
输出： 2
解释： 有两种方法可以爬到楼顶。

1 阶 + 1 阶
2 阶


示例 2：

输入： 3
输出： 3
解释： 有三种方法可以爬到楼顶。

1 阶 + 1 阶 + 1 阶
1 阶 + 2 阶
2 ...]]></description><category></category></item><item><title><![CDATA[LeetCode 69. x 的平方根 Sqrt(x)（C语言）]]></title><link>https://blog.youkuaiyun.com/hang404/article/details/85320948</link><guid>https://blog.youkuaiyun.com/hang404/article/details/85320948</guid><author>hang404</author><pubDate>Fri, 28 Dec 2018 13:59:22 +0800</pubDate><description><![CDATA[题目描述：
实现 int sqrt(int x) 函数。
计算并返回 x 的平方根，其中 x 是非负整数。
由于返回类型是整数，结果只保留整数的部分，小数部分将被舍去。
示例 1:

输入: 4
输出: 2

示例 2:

输入: 8
输出: 2
说明: 8 的平方根是 2.82842…,
由于返回类型是整数，小数部分将被舍去。

题目解答：
方法1：暴力法：
从1开始向后遍历，直至其平方大于x。...]]></description><category></category></item><item><title><![CDATA[Linux 虚拟内存和物理内存的理解 (转载)]]></title><link>https://blog.youkuaiyun.com/hang404/article/details/85292679</link><guid>https://blog.youkuaiyun.com/hang404/article/details/85292679</guid><author>hang404</author><pubDate>Thu, 27 Dec 2018 17:14:02 +0800</pubDate><description><![CDATA[转载于：https://www.cnblogs.com/panchanggui/p/9288389.html
关于Linux 虚拟内存和物理内存的理解。
首先，让我们看下虚拟内存：
第一层理解

每个进程都有自己独立的4G内存空间，各个进程的内存空间具有类似的结构
一个新进程建立的时候，将会建立起自己的内存空间，此进程的数据，代码等从磁盘拷贝到自己的进程空间哪些数据在哪里，都由进程控制表中的tas...]]></description><category></category></item><item><title><![CDATA[LeetCode 67. 二进制求和 Add Binary（C语言）]]></title><link>https://blog.youkuaiyun.com/hang404/article/details/85280328</link><guid>https://blog.youkuaiyun.com/hang404/article/details/85280328</guid><author>hang404</author><pubDate>Thu, 27 Dec 2018 14:18:12 +0800</pubDate><description><![CDATA[题目描述：
给定两个二进制字符串，返回他们的和（用二进制表示）。
输入为非空字符串且只包含数字 1 和 0。
示例 1:

输入: a = “11”, b = “1”
输出: “100”

示例 2:

输入: a = “1010”, b = “1011”
输出: “10101”

题目解答：
方法1：逆向遍历
记录标记位，将标记位与两个字符串的对应位相加，分析和，确定当前位的值和是否需要进位。
...]]></description><category></category></item><item><title><![CDATA[LeetCode 66. 加一 Plus One（C语言）]]></title><link>https://blog.youkuaiyun.com/hang404/article/details/85279389</link><guid>https://blog.youkuaiyun.com/hang404/article/details/85279389</guid><author>hang404</author><pubDate>Thu, 27 Dec 2018 14:12:43 +0800</pubDate><description><![CDATA[题目描述：
给定一个由整数组成的非空数组所表示的非负整数，在该数的基础上加一。
最高位数字存放在数组的首位， 数组中每个元素只存储一个数字。
你可以假设除了整数 0 之外，这个整数不会以零开头。
示例 1:

输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。

示例 2:

输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321...]]></description><category></category></item><item><title><![CDATA[LeetCode 64. 最小路径和 Minimum Path Sum（C语言）]]></title><link>https://blog.youkuaiyun.com/hang404/article/details/85279268</link><guid>https://blog.youkuaiyun.com/hang404/article/details/85279268</guid><author>hang404</author><pubDate>Thu, 27 Dec 2018 14:03:38 +0800</pubDate><description><![CDATA[题目描述：
给定一个包含非负整数的 m x n 网格，请找出一条从左上角到右下角的路径，使得路径上的数字总和为最小。

说明：每次只能向下或者向右移动一步。

示例:

输入:
[
[1,3,1],
[1,5,1],
[4,2,1]
]
输出: 7
解释: 因为路径 1→3→1→1→1 的总和最小。

题目解答：
方法1：动态规划
每个位置存储到达当前位置(i, j)的最小路径和，(i - 1, ...]]></description><category></category></item><item><title><![CDATA[LeetCode 63. 不同路径 II Unique Paths II（C语言）]]></title><link>https://blog.youkuaiyun.com/hang404/article/details/85278975</link><guid>https://blog.youkuaiyun.com/hang404/article/details/85278975</guid><author>hang404</author><pubDate>Thu, 27 Dec 2018 13:58:42 +0800</pubDate><description><![CDATA[题目描述：
一个机器人位于一个 m x n 网格的左上角 （起始点在下图中标记为“Start” ）。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角（在下图中标记为“Finish”）。
现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径？

网格中的障碍物和空位置分别用 1 和 0 来表示。

说明：m 和 n 的值均不超过 100。

示例 1:

输入:
[
[...]]></description><category></category></item></channel></rss>