<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[笑忘哭的博客]]></title><description><![CDATA[路痴的救赎]]></description><link>https://blog.youkuaiyun.com/xiaowangku</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; xiaowangku]]></copyright><item><title><![CDATA[【画图分析】Leetcode 201 题 数字范围按位与（标签：位运算）]]></title><link>https://blog.youkuaiyun.com/xiaowangku/article/details/114193101</link><guid>https://blog.youkuaiyun.com/xiaowangku/article/details/114193101</guid><author>xiaowangku</author><pubDate>Sat, 27 Feb 2021 21:29:28 +0800</pubDate><description><![CDATA[文章目录题目描述思路分析技术公众号：小猿君的算法笔记
题目描述
给定范围 [m, n]，其中 0 &lt;= m &lt;= n &lt;= 2147483647，返回此范围内所有数字的按位与（包含 m, n 两端点）。
示例1：
输入：[5,7]
输出：4
示例2：
输入：[0,1]
输出：0

思路分析
按照题目的要求，如果逐个按位与，那么在 m 、n 范围较大的情况下，将会出现超时。
对题目中所给用例 [5,7] 按位与运算：

1、可以看到，5 和 7 二进制形式存在公共前缀 01 ，因此从 5 →]]></description><category></category></item><item><title><![CDATA[查找服务器中 nginx 所使用的 nginx.conf 配置文件位置]]></title><link>https://blog.youkuaiyun.com/xiaowangku/article/details/114038213</link><guid>https://blog.youkuaiyun.com/xiaowangku/article/details/114038213</guid><author>xiaowangku</author><pubDate>Wed, 24 Feb 2021 20:07:33 +0800</pubDate><description><![CDATA[一般情况下，可以使用 nginx -t 命令查看 nginx.conf 所在位置。
# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful



如果 nginx 命令无法直接执行，我们可以通过一些方式查找 ：
ps -ef | grep nginx
root   3235   1]]></description><category></category></item><item><title><![CDATA[【思路分析】Leetcode 111 题 二叉树的最小深度（标签：树、深度优先搜索）]]></title><link>https://blog.youkuaiyun.com/xiaowangku/article/details/113800885</link><guid>https://blog.youkuaiyun.com/xiaowangku/article/details/113800885</guid><author>xiaowangku</author><pubDate>Sat, 13 Feb 2021 14:03:20 +0800</pubDate><description><![CDATA[题目描述
给定一个二叉树，找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明：叶子节点是指没有子节点的节点。
示例 ：

输入：root = [3,9,20,null,null,15,7]
输出：2

思路分析
① 保存一个全局遍历 min 作为最小深度。
② 搜索叶子节点，将该节点的深度 level 与 min 比较，取较小者。
代码描述
使用 Java 进行代码描述：
class Solution {
    i]]></description><category></category></item><item><title><![CDATA[Leetcode 107 题 二叉树的层序遍历 II（标签：树、深度优先搜索）]]></title><link>https://blog.youkuaiyun.com/xiaowangku/article/details/113800764</link><guid>https://blog.youkuaiyun.com/xiaowangku/article/details/113800764</guid><author>xiaowangku</author><pubDate>Sat, 13 Feb 2021 13:47:35 +0800</pubDate><description><![CDATA[给定一个二叉树，返回其节点值自底向上的层序遍历。 （即按从叶子节点所在层到根节点所在的层，逐层从左向右遍历）

例如：
给定二叉树 [3,9,20,null,null,15,7],]]></description><category></category></item><item><title><![CDATA[Leetcode 101 题 对称二叉树]]></title><link>https://blog.youkuaiyun.com/xiaowangku/article/details/113786915</link><guid>https://blog.youkuaiyun.com/xiaowangku/article/details/113786915</guid><author>xiaowangku</author><pubDate>Wed, 10 Feb 2021 23:11:35 +0800</pubDate><description><![CDATA[给定一个二叉树，检查它是否是镜像对称的。

例如，二叉树 [1,2,2,3,4,4,3] 是对称的。]]></description><category></category></item><item><title><![CDATA[Leetcode 191 题 位 1 的个数]]></title><link>https://blog.youkuaiyun.com/xiaowangku/article/details/113768791</link><guid>https://blog.youkuaiyun.com/xiaowangku/article/details/113768791</guid><author>xiaowangku</author><pubDate>Tue, 09 Feb 2021 12:17:59 +0800</pubDate><description><![CDATA[题目描述
编写一个函数，输入是一个无符号整数（以二进制串的形式），返回其二进制表达式中数字位数为 ‘1’ 的个数（也被称为汉明重量）。
思路分析
方法一、计算每一位是否为 1
显然，我们可以通过判断数中每一位是否为 1 求得位 1 的个数。
① 获得最低位是否为 1，通过 n &amp; 1，若结果为 1 ，说明最低位为 1，否则最低位为 0。
② 通过位移更新最低位， n &gt;&gt;= 1，移位 32 次后，n 中的每一位都会被获得。
publi]]></description><category></category></item><item><title><![CDATA[Leetcode 206 题 反转链表]]></title><link>https://blog.youkuaiyun.com/xiaowangku/article/details/113705157</link><guid>https://blog.youkuaiyun.com/xiaowangku/article/details/113705157</guid><author>xiaowangku</author><pubDate>Fri, 05 Feb 2021 22:44:52 +0800</pubDate><description><![CDATA[文章目录题目描述思路分析技术公众号：小猿君的算法笔记
题目描述
反转一个单链表。
示例:
输入: 1-&gt;2-&gt;3-&gt;4-&gt;5-&gt;NULL
输出: 5-&gt;4-&gt;3-&gt;2-&gt;1-&gt;NULL

思路分析
「原地逆置」
利用三指针 pre、cur 和 next 三个连续的指针，分别指向前一个节点、当前节点以及当前节点的下一个节点。

在原地进行逆置，cur.next = pre，那么 cur 就会和后面的节点开连接，为了避免这一问题，需要使用 next 指]]></description><category></category></item><item><title><![CDATA[Leetcode 207 题 课程表]]></title><link>https://blog.youkuaiyun.com/xiaowangku/article/details/113705031</link><guid>https://blog.youkuaiyun.com/xiaowangku/article/details/113705031</guid><author>xiaowangku</author><pubDate>Fri, 05 Feb 2021 22:34:44 +0800</pubDate><description><![CDATA[题目描述
你这个学期必须选修 numCourse 门课程，记为 0 到 numCourse-1 。
在选修某些课程之前需要一些先修课程。例如，想要学习课程 0 ，你需要先完成课程 1 ，我们用一个匹配来表示他们：[0,1]
给定课程总量以及它们的先决条件，请你判断是否可能完成所有课程的学习？
示例1：
输入：2, [[1,0]]
输出：true
解释：总共有 2 门课程。学习课程 1 之前，你需要完成课程 0。所以这是可能的。
示例 2：
输入：2, [[1,0],[0,1]]
输出：false
解释：总共]]></description><category></category></item><item><title><![CDATA[Leetcode 100 题 相同的树]]></title><link>https://blog.youkuaiyun.com/xiaowangku/article/details/113477977</link><guid>https://blog.youkuaiyun.com/xiaowangku/article/details/113477977</guid><author>xiaowangku</author><pubDate>Sun, 31 Jan 2021 15:49:41 +0800</pubDate><description><![CDATA[文章目录题目描述思路分析代码描述技术公众号：小猿君的算法笔记
题目描述
给定两个二叉树，编写一个函数来检验它们是否相同。
如果两个树在结构上相同，并且节点具有相同的值，则认为它们是相同的。
示例：
输入：

输出：true

思路分析
通过递归对二叉树各个节点进行比较，以判断两棵树是否相同。
判断递归的返回条件：
1、如果两个节点都为空，说明比较到了尽头，返回 true。
2、如果一个节点为空，另一个节点不为空，两节点不同，返回 false。
3、如果左右子树都相同，返回 true，否则返回 false。
]]></description><category></category></item><item><title><![CDATA[Leetcode 213 题 打家劫舍 II]]></title><link>https://blog.youkuaiyun.com/xiaowangku/article/details/113444558</link><guid>https://blog.youkuaiyun.com/xiaowangku/article/details/113444558</guid><author>xiaowangku</author><pubDate>Sat, 30 Jan 2021 18:37:55 +0800</pubDate><description><![CDATA[题目描述
你是一个专业的小偷，计划偷窃沿街的房屋，每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ，这意味着第一个房屋和最后一个房屋是紧挨着的。同时，相邻的房屋装有相互连通的防盗系统，如果两间相邻的房屋在同一晚上被小偷闯入，系统会自动报警 。
给定一个代表每个房屋存放金额的非负整数数组，计算你 在不触动警报装置的情况下 ，能够偷窃到的最高金额。
示例：
输入：nums = [2,3,2]
输出：3
解释：你不能先偷窃 1 号房屋（金额 = 2），然后偷窃 3 号房屋（金额 = 2）, 因为他们是相]]></description><category></category></item><item><title><![CDATA[Leetcode 190 题 颠倒二进制位]]></title><link>https://blog.youkuaiyun.com/xiaowangku/article/details/113283684</link><guid>https://blog.youkuaiyun.com/xiaowangku/article/details/113283684</guid><author>xiaowangku</author><pubDate>Wed, 27 Jan 2021 23:43:56 +0800</pubDate><description><![CDATA[题目描述
颠倒给定的 32 位无符号整数的二进制位。
示例：
输入：00000010100101000001111010011100
输出：00111001011110000010100101000000
解释：输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596，因此返回 964176192，其二进制表示形式为 00111001011110000010100101000000。

思路分析
1、对二进制数进行翻转，类似于整数翻转，需要先获得二进]]></description><category></category></item><item><title><![CDATA[Leetcode 199 题 二叉树的右视图]]></title><link>https://blog.youkuaiyun.com/xiaowangku/article/details/113283193</link><guid>https://blog.youkuaiyun.com/xiaowangku/article/details/113283193</guid><author>xiaowangku</author><pubDate>Wed, 27 Jan 2021 23:37:13 +0800</pubDate><description><![CDATA[题目描述
给定一棵二叉树，想象自己站在它的右侧，按照从顶部到底部的顺序，返回从右侧所能看到的节点值。
示例：
输入：[1,2,3,null,5,null,4]
输出：[1, 3, 4]
解释：


思路分析
显然，我们需要获得每层最右边的元素，加入到结果集中。
「广度优先搜索」
层序遍历，按照从右到左的顺序访问节点，每层第一次被访问的元素即为最右边元素。
class Solution {
    public List&lt;Integer&gt; rightSideView(TreeNode root) ]]></description><category></category></item><item><title><![CDATA[Leetcode 203 题 移除链表元素（标签：链表）]]></title><link>https://blog.youkuaiyun.com/xiaowangku/article/details/113052182</link><guid>https://blog.youkuaiyun.com/xiaowangku/article/details/113052182</guid><author>xiaowangku</author><pubDate>Sat, 23 Jan 2021 15:34:32 +0800</pubDate><description><![CDATA[题目描述
删除链表中等于给定值 val 的所有节点。
示例：
输入：1-&gt;2-&gt;6-&gt;3-&gt;4-&gt;5-&gt;6, val = 6
输出：1-&gt;2-&gt;3-&gt;4-&gt;5

思路分析
「使用双指针」
为了方便处理，可以利用哑节点记录表头节点。使用双指针 pre 和 cur 分别指向上一个节点和当前节点。

如果当前节点为需要被删除的目标节点，那么上一个节点的指针就要指向当前节点的下一个节点。

class Solution {
    public ListN]]></description><category></category></item><item><title><![CDATA[Leetcode 134 题 加油站（标签：贪心算法）]]></title><link>https://blog.youkuaiyun.com/xiaowangku/article/details/112853389</link><guid>https://blog.youkuaiyun.com/xiaowangku/article/details/112853389</guid><author>xiaowangku</author><pubDate>Tue, 19 Jan 2021 22:02:57 +0800</pubDate><description><![CDATA[题目描述
在一条环路上有 N 个加油站，其中第 i 个加油站有汽油 gas[i] 升。
你有一辆油箱容量无限的的汽车，从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发，开始时油箱为空。
如果你可以绕环路行驶一周，则返回出发时加油站的编号，否则返回 -1。
说明:
如果题目有解，该答案即为唯一答案。
输入数组均为非空数组，且长度相同。
输入数组中的元素均为非负数。
示例：
输入:
gas  = [1,2,3,4,5]
cost = [3,4,5,1,2]
输]]></description><category></category></item><item><title><![CDATA[X-Forwarded-For 客户端 IP 伪造过程及防范]]></title><link>https://blog.youkuaiyun.com/xiaowangku/article/details/112796338</link><guid>https://blog.youkuaiyun.com/xiaowangku/article/details/112796338</guid><author>xiaowangku</author><pubDate>Mon, 18 Jan 2021 22:27:51 +0800</pubDate><description><![CDATA[最近收到一条安全漏洞报告，通过利用代码漏洞，并结合HTTP扩展请求头 X-Forwarded-For 可以对客户端IP进行伪造，以达到非法目的。下面我将对这个漏洞进行介绍。

X-Forwarded-For 介绍
X-Forwarded-For 是一个 HTTP 扩展头部，用来表示HTTP请求端真实 IP，HTTP/1.1 协议并没有对它的定义，但现如今X-Forwarded-For已被各大 HTTP 代理、负载均衡等转发服务广泛使用。
X-Forwarded-For 请求头格式：
X-Forwarded-]]></description><category></category></item><item><title><![CDATA[Leetcode 540 题 有序数组中的单一元素]]></title><link>https://blog.youkuaiyun.com/xiaowangku/article/details/112645063</link><guid>https://blog.youkuaiyun.com/xiaowangku/article/details/112645063</guid><author>xiaowangku</author><pubDate>Thu, 14 Jan 2021 23:31:50 +0800</pubDate><description><![CDATA[题目描述
给定一个只包含整数的有序数组，每个元素都会出现两次，唯有一个数只会出现一次，找出这个数。
示例:
输入: [1,1,2,3,3,4,4,8,8]
输出: 2
注意: 您的方案应该在 O(log n)时间复杂度和 O(1)空间复杂度中运行。

思路分析
「思路一」
由于每个元素都会出现两次，寻找只出现一次的元素，我们可以想到的是使用异或，我们可以利用异或的特性，相同为0，那么出现两次的结果都会被异或为0，剩下的那一位就是我们需要的结果。
「思路二」
到目前为止，题目所给的有序数组这一条件我们似乎并没]]></description><category></category></item><item><title><![CDATA[Leetcode 354 题 俄罗斯套娃信封问题]]></title><link>https://blog.youkuaiyun.com/xiaowangku/article/details/112499872</link><guid>https://blog.youkuaiyun.com/xiaowangku/article/details/112499872</guid><author>xiaowangku</author><pubDate>Mon, 11 Jan 2021 22:33:29 +0800</pubDate><description><![CDATA[题目描述
给定一些标记了宽度和高度的信封，宽度和高度以整数对形式 (w, h) 出现。当另一个信封的宽度和高度都比这个信封大的时候，这个信封就可以放进另一个信封里，如同俄罗斯套娃一样。
请计算最多能有多少个信封能组成一组“俄罗斯套娃”信封（即可以把一个信封放到另一个信封里面）。
说明:
不允许旋转信封。
示例:
输入: envelopes = [[5,4],[6,4],[6,7],[2,3]]
输出: 3
解释: 最多信封的个数为 3, 组合为: [2,3] =&gt; [5,4] =&gt; [6,7]。]]></description><category></category></item><item><title><![CDATA[Leetcode 300 题 最长递增子序列]]></title><link>https://blog.youkuaiyun.com/xiaowangku/article/details/112399219</link><guid>https://blog.youkuaiyun.com/xiaowangku/article/details/112399219</guid><author>xiaowangku</author><pubDate>Sat, 09 Jan 2021 18:52:03 +0800</pubDate><description><![CDATA[题目描述
给你一个整数数组 nums ，找到其中最长严格递增子序列的长度。
子序列是由数组派生而来的序列，删除（或不删除）数组中的元素而不改变其余元素的顺序。例如，[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。
示例：
输入：nums = [10,9,2,5,3,7,101,18]
输出：4
解释：最长递增子序列是 [2,3,7,101]，因此长度为 4 。

思路分析
这道题求最长上升子序列，我们可以定义一个 dp 数组，dp[i] 表示以 nums[i] 为最后一个元素时，最长上]]></description><category></category></item><item><title><![CDATA[Leetcode 452 题 用最少数量的箭引爆气球]]></title><link>https://blog.youkuaiyun.com/xiaowangku/article/details/112255404</link><guid>https://blog.youkuaiyun.com/xiaowangku/article/details/112255404</guid><author>xiaowangku</author><pubDate>Thu, 07 Jan 2021 12:37:02 +0800</pubDate><description><![CDATA[题目描述
在二维空间中有许多球形的气球。对于每个气球，提供的输入是水平方向上，气球直径的开始和结束坐标。由于它是水平的，所以纵坐标并不重要，因此只要知道开始和结束的横坐标就足够了。开始坐标总是小于结束坐标。
一支弓箭可以沿着 x 轴从不同点完全垂直地射出。在坐标 x 处射出一支箭，若有一个气球的直径的开始和结束坐标为 xstart，xend， 且满足  xstart ≤ x ≤ xend，则该气球会被引爆。可以射出的弓箭的数量没有限制。弓箭一旦被射出之后，可以无限地前进。我们想找到使得所有气球全部被引爆，所]]></description><category></category></item><item><title><![CDATA[Leetcode 417 题 太平洋大西洋水流问题]]></title><link>https://blog.youkuaiyun.com/xiaowangku/article/details/111939771</link><guid>https://blog.youkuaiyun.com/xiaowangku/article/details/111939771</guid><author>xiaowangku</author><pubDate>Sat, 02 Jan 2021 14:38:26 +0800</pubDate><description><![CDATA[题目描述
给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度。“太平洋”处于大陆的左边界和上边界，而“大西洋”处于大陆的右边界和下边界。
规定水流只能按照上、下、左、右四个方向流动，且只能从高到低或者在同等高度上流动。
请找出那些水流既可以流动到“太平洋”，又能流动到“大西洋”的陆地单元的坐标。
示例：
给定下面的 5x5 矩阵:

返回:[[0, 4], [1, 3], [1, 4], [2, 2], [3, 0], [3, 1], [4, 0]] (上图中带括号的单元)。

思路分析
]]></description><category></category></item></channel></rss>