<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[pl0321的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/pl0321</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; pl0321]]></copyright><item><title><![CDATA[算法之剑指offer题目总结]]></title><link>https://blog.youkuaiyun.com/pl0321/article/details/116454996</link><guid>https://blog.youkuaiyun.com/pl0321/article/details/116454996</guid><author>pl0321</author><pubDate>Fri, 07 May 2021 00:24:35 +0800</pubDate><description><![CDATA[简介
剑指offer中的题目是面试中考察的重点，本篇文章对这些题目进行总结，方便日后阅读。
题目
题目顺序参考 leetcode 中出现的顺序。
1. 数组中重复的数字
2. 二维数组中的查找  
3. 替换空格  
4. 从尾到头打印链表  
5. 重建二叉树  
6. 用两个栈实现队列  
7. 斐波那契数列  
8. 青蛙跳台阶问题  
9. 旋转数组的最小数字  
10. 矩阵中的路径  
解析
1. 数组中重复的数字

题目描述
找出数组中重复的数字。
在一个长度为 n 的数组 nums 里的所有]]></description><category></category></item><item><title><![CDATA[算法之「组合总和」问题]]></title><link>https://blog.youkuaiyun.com/pl0321/article/details/116089761</link><guid>https://blog.youkuaiyun.com/pl0321/article/details/116089761</guid><author>pl0321</author><pubDate>Sat, 24 Apr 2021 14:24:38 +0800</pubDate><description><![CDATA[简介
本篇文章介绍「组合总和」各种变形题的解题思路，争取能够攻克所有组合数问题。
题目
39. 组合总和
40. 组合总和 II
216. 组合总和 III
377. 组合总和 Ⅳ
下面通过例子由浅至深详细讲解。
所有例题均来自leetcode，所示代码均通过所有测试。
解析
39. 组合总和

题目描述
给定一个无重复元素的数组 candidates 和一个目标数 target ，找出 candidates 中所有可以使数字和为 target 的组合。
candidates 中的数字可以无限制重复被选取。]]></description><category></category></item><item><title><![CDATA[算法多线程leetcode题目总结（多解法实现）]]></title><link>https://blog.youkuaiyun.com/pl0321/article/details/115898467</link><guid>https://blog.youkuaiyun.com/pl0321/article/details/115898467</guid><author>pl0321</author><pubDate>Tue, 20 Apr 2021 19:16:33 +0800</pubDate><description><![CDATA[简介
本文汇总了leetcode上多线程题目，并对每一道题进行多方法解答，并分析不同方法之间的优劣。文中示例代码为Java。
题目

1114. 按序打印 简单
1115. 交替打印FooBar 中等
1116. 打印零与奇偶数 中等
1117. H2O 生成 中等

以上题目均来自leetcode.
解答
1114. 按序打印
题目描述
我们提供了一个类：
public class Foo {
  public void first() { print("first"); }
  public void ]]></description><category></category></item><item><title><![CDATA[算法之堆的应用（优先队列）]]></title><link>https://blog.youkuaiyun.com/pl0321/article/details/115842473</link><guid>https://blog.youkuaiyun.com/pl0321/article/details/115842473</guid><author>pl0321</author><pubDate>Mon, 19 Apr 2021 00:27:17 +0800</pubDate><description><![CDATA[简介
堆（Heap）是一个可以被看成近似完全二叉树的数组。树上的每一个结点对应数组的一个元素。除了最底层外，该树是完全充满的，而且是从左到右填充。—— 来自：《算法导论》
堆包括最大堆和最小堆：最大堆的每一个节点（除了根结点）的值不大于其父节点；最小堆的每一个节点（除了根结点）的值不小于其父节点。
堆常见的操作：
HEAPIFY 建堆：把一个乱序的数组变成堆结构的数组，时间复杂度为 O(n)O(n)O(n)。
HEAPPUSH：把一个数值放进已经是堆结构的数组中，并保持堆结构，时间复杂度为 O(log&nb]]></description><category></category></item><item><title><![CDATA[算法leetcode 彻底搞懂LRU和LFU缓存问题]]></title><link>https://blog.youkuaiyun.com/pl0321/article/details/115726583</link><guid>https://blog.youkuaiyun.com/pl0321/article/details/115726583</guid><author>pl0321</author><pubDate>Thu, 15 Apr 2021 15:38:28 +0800</pubDate><description><![CDATA[简介
LRU (Least Recently Used) 缓存，即在缓存容量达到上限的条件下，删除最久未使用过的数据，腾出空间存储新的数据。
LFU (Least Frequently Used) 缓存，即在缓存容量达到上限的条件下，删除使用频率最少的数据，当使用频率相同时，删除最久未使用的数据。
这两种缓存算法在实践中用得非常普遍，例如MySQL的内存数据页淘汰算法，Redis的淘汰策略等。
例题

1. T146. LRU缓存机制 中等
2. T460. LFU缓存 困难

以上题目均来自leetcod]]></description><category></category></item><item><title><![CDATA[算法之动态规划总结（11种DP类型，70道全部搞懂）]]></title><link>https://blog.youkuaiyun.com/pl0321/article/details/115507286</link><guid>https://blog.youkuaiyun.com/pl0321/article/details/115507286</guid><author>pl0321</author><pubDate>Thu, 08 Apr 2021 10:16:35 +0800</pubDate><description><![CDATA[简介
参考文章，将所有的DP问题分成11大类，本文将这些题目的解法进行探讨。所有题目均来自leetcode。
题目
1、线性 DP

最经典单串：


最长上升子序列


最经典双串：


最长公共子序列


经典问题：


三角形最小路径和
最大子序和
乘积最大子数组
鸡蛋掉落（DP+二分）
俄罗斯套娃信封问题


打家劫舍系列: (打家劫舍3 是树形DP)


打家劫舍
打家劫舍 II


股票系列:


买卖股票的最佳时机
买卖股票的最佳时机 II
买卖股票的最佳时机 III
买卖股票的最佳时机 IV]]></description><category></category></item><item><title><![CDATA[算法之股票最佳时机系列问题（一次搞定6道股票问题）]]></title><link>https://blog.youkuaiyun.com/pl0321/article/details/115481788</link><guid>https://blog.youkuaiyun.com/pl0321/article/details/115481788</guid><author>pl0321</author><pubDate>Wed, 07 Apr 2021 11:38:31 +0800</pubDate><description><![CDATA[简述
本文旨在总结leetcode中遇到的一系列股票问题，分别详细阐述解决方法和各问题之间的区别。
目录

1. T121 买卖股票的最佳时机 简单
2. T122 买卖股票的最佳时机 II 简单
3. T123 买卖股票的最佳时机 III 困难
4. T188 买卖股票的最佳时机 IV 困难
5. T309 最佳买卖股票时机含冷冻期 中等
6. T714 买卖股票的最佳时机含手续费 中等

以上题目均来自leetcode
题目
####1. 买卖股票的最佳时机
题目描述
给定一个数组，它的第 i 个元素是]]></description><category></category></item><item><title><![CDATA[算法之N数之和]]></title><link>https://blog.youkuaiyun.com/pl0321/article/details/115399065</link><guid>https://blog.youkuaiyun.com/pl0321/article/details/115399065</guid><author>pl0321</author><pubDate>Wed, 07 Apr 2021 00:39:41 +0800</pubDate><description><![CDATA[简述
从例题的角度出发，一次解决所有的N数之和问题。
例题目录

1. T1. 两数之和  简单
2. T15. 三数之和 中等
3. T18. 四数之和 中等
4. T16. 最接近的三数之和 中等
5. T633. 平方数之和 中等
6. T剑指 Offer 57. 和为s的两个数字 简单
7. T剑指 Offer 57 - II. 和为s的连续正数序列 简单

详细
1. 两数之和
题目描述
给定一个整数数组 nums 和一个整数目标值 target，请你在该数组中找出 和为目标值 的那 两个 整数，]]></description><category></category></item><item><title><![CDATA[反转链表系列问题总结（多种解法多种题型）]]></title><link>https://blog.youkuaiyun.com/pl0321/article/details/115201228</link><guid>https://blog.youkuaiyun.com/pl0321/article/details/115201228</guid><author>pl0321</author><pubDate>Thu, 25 Mar 2021 15:18:13 +0800</pubDate><description><![CDATA[简介
反转链表是面试中常考问题，题型变化就那几种，包括整个链表的反转、范围反转等，本篇文章将这些问题放在一起进行讨论和总结，并对多种解法进行分析和对比，做到“一网打尽”！
反转链表系列题目

206. 反转链表 简单
92. 反转链表 II 中等
25. K 个一组翻转链表 困难

以上题目均来自leetcode
例题详细
1、反转链表
题目描述
反转一个单链表。
示例:

输入: 1-&gt;2-&gt;3-&gt;4-&gt;5-&gt;NULL
输出: 5-&gt;4-&gt;3-&gt;2-&gt;]]></description><category></category></item><item><title><![CDATA[算法之单调栈的使用总结（含接雨水、柱状图等经典问题）]]></title><link>https://blog.youkuaiyun.com/pl0321/article/details/115184421</link><guid>https://blog.youkuaiyun.com/pl0321/article/details/115184421</guid><author>pl0321</author><pubDate>Wed, 24 Mar 2021 19:06:57 +0800</pubDate><description><![CDATA[简述
单调栈是栈内元素满足单调性的栈。假设需要维护一个单调递增栈，新元素进栈时，为了维护栈的单调性，需要弹出大于等于新元素的栈顶元素。

对于数组中的元素，可以找到左侧/右侧第一个比它大/小的元素。
寻找某一子数组，使得子数组中的最小值乘以子数组的长度最大。
寻找某一子数组，使得子数组中的最小值乘以子数组所有元素和最大。

例题目录

1. 接雨水
2. 柱状图中最大的矩形
3. 最大宽度坡
4. 表现良好的最长时间段
5. 滑动窗口的最大值
6. T456 132模式

题目来源：leetcode
例题
]]></description><category></category></item><item><title><![CDATA[算法之旋转数组的查找问题整理（附二分查找模板）]]></title><link>https://blog.youkuaiyun.com/pl0321/article/details/115027591</link><guid>https://blog.youkuaiyun.com/pl0321/article/details/115027591</guid><author>pl0321</author><pubDate>Sat, 20 Mar 2021 15:31:04 +0800</pubDate><description><![CDATA[介绍

旋转数组的定义：
排好序的数组 nums 在某个下标 k（0 &lt;= k &lt; nums.length）上进行了 旋转，使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]]（下标 从 0 开始 计数）。例如， [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2] 。
相关问题


153. 寻找旋转排序数组中的最小值
寻找旋转数组中的最小值，数组中每个元素的唯]]></description><category></category></item><item><title><![CDATA[正则表达式 -- 一文成为正则老司机]]></title><link>https://blog.youkuaiyun.com/pl0321/article/details/107284738</link><guid>https://blog.youkuaiyun.com/pl0321/article/details/107284738</guid><author>pl0321</author><pubDate>Sat, 11 Jul 2020 15:53:02 +0800</pubDate><description><![CDATA[概述
本文是对(《正则表达式必知必会的》)[https://book.douban.com/subject/26285406/]的知识点梳理。本书总结了工程中常用的正则表达式用法，梳理出来便于日常查找和复习。
文中所有正则表达式示例用python3中的re包作为演示。
目录
1 匹配单个字符
本节主要讲单个字符通配符“.”和转义元字符“\”的使用。
元字符：有特殊含义的字符，而不是字符本身含义。
1.1 “.”的使用
&gt;&gt;&gt; import re
&gt;&gt;&gt; string = ]]></description><category></category></item><item><title><![CDATA[leetcode 1388. 3n 块披萨 动态规划 python]]></title><link>https://blog.youkuaiyun.com/pl0321/article/details/105049240</link><guid>https://blog.youkuaiyun.com/pl0321/article/details/105049240</guid><author>pl0321</author><pubDate>Mon, 23 Mar 2020 15:32:54 +0800</pubDate><description><![CDATA[leetcode 1388. 3n 块披萨 动态规划 python题目描述分析代码
题目描述
给你一个披萨，它由 3n 块不同大小的部分组成，现在你和你的朋友们需要按照如下规则来分披萨：
你挑选 任意 一块披萨。
Alice 将会挑选你所选择的披萨逆时针方向的下一块披萨。
Bob 将会挑选你所选择的披萨顺时针方向的下一块披萨。
重复上述过程直到没有披萨剩下。
每一块披萨的大小按顺时针方向由循环数组...]]></description><category></category></item><item><title><![CDATA[leetcode 1383. 最大的团队表现值 Python]]></title><link>https://blog.youkuaiyun.com/pl0321/article/details/104906213</link><guid>https://blog.youkuaiyun.com/pl0321/article/details/104906213</guid><author>pl0321</author><pubDate>Mon, 16 Mar 2020 19:32:27 +0800</pubDate><description><![CDATA[思路：先按efficiency进行降序排列，然后同时遍历排序后的speed和efficiency，在遍历过程中进行这几项操作：(1)将speed放入最小堆中，(2)保持堆的大小为k，(3)记录堆中speed之和，(4)寻找最大团队表现值。

献上代码：


import heapq
class Solution:
    def maxPerformance(self, n: int, speed...]]></description><category></category></item><item><title><![CDATA[re.sub 指定位置插入]]></title><link>https://blog.youkuaiyun.com/pl0321/article/details/99639374</link><guid>https://blog.youkuaiyun.com/pl0321/article/details/99639374</guid><author>pl0321</author><pubDate>Thu, 15 Aug 2019 15:48:44 +0800</pubDate><description><![CDATA[先说下group()

group()用来提出分组截获的字符串，举个例子：



-group（0）就是匹配正则表达式整体结果

- group(1) 列出第一个括号匹配部分，group(2) 列出第二个括号匹配部分，group(3) 列出第三个括号匹配部分。

re.sub



其中“\1”表示括号内的部分
...]]></description><category></category></item><item><title><![CDATA[python中你可能不知道的事]]></title><link>https://blog.youkuaiyun.com/pl0321/article/details/90550247</link><guid>https://blog.youkuaiyun.com/pl0321/article/details/90550247</guid><author>pl0321</author><pubDate>Sat, 25 May 2019 18:49:30 +0800</pubDate><description><![CDATA[for … else … 语句
for循环是python编程中用到最大的语句，但是你可能不知道还有for…else…语句。
说明
在for循环之后使用else，可以用于判断for循环是自然结束还是break结束。
举例
不使用else
for i in range(5):
	if i == 3:
		break
	print(i)
&gt;&gt; 0
&gt;&gt; 1
&gt;&gt; 2
...]]></description><category></category></item><item><title><![CDATA[LeetCode 215 数组中的第K个最大元素(Kth Largest Element in an Array) python实现]]></title><link>https://blog.youkuaiyun.com/pl0321/article/details/89345128</link><guid>https://blog.youkuaiyun.com/pl0321/article/details/89345128</guid><author>pl0321</author><pubDate>Wed, 17 Apr 2019 00:05:29 +0800</pubDate><description><![CDATA[题目描述
在未排序的数组中找到第 k 个最大的元素。请注意，你需要找的是数组排序后的第 k 个最大的元素，而不是第 k 个不同的元素。
示例 1:

输入: [3,2,1,5,6,4] 和 k = 2
输出: 5

示例 2:

输入: [3,2,3,1,2,4,5,5,6] 和 k = 4
输出: 4

说明:
你可以假设 k 总是有效的，且 1 ≤ k ≤ 数组的长度。
分析：
受启发于快速排...]]></description><category></category></item><item><title><![CDATA[[leetcode 543] 二叉树的直径 Diameter of Binary Tree (python)]]></title><link>https://blog.youkuaiyun.com/pl0321/article/details/89055917</link><guid>https://blog.youkuaiyun.com/pl0321/article/details/89055917</guid><author>pl0321</author><pubDate>Sat, 06 Apr 2019 15:00:05 +0800</pubDate><description><![CDATA[题目描述
给定一棵二叉树，你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。
示例 :
给定二叉树
      1
     / \
    2   3
   / \     
  4   5    

返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。
注意：两结点之间的路径长度是以它们之间边的数目表示。
分析
每个结点...]]></description><category></category></item><item><title><![CDATA[[leetcode 235 236] 二叉搜索树/二叉树的最近公共祖先 详解 (python)]]></title><link>https://blog.youkuaiyun.com/pl0321/article/details/89055571</link><guid>https://blog.youkuaiyun.com/pl0321/article/details/89055571</guid><author>pl0321</author><pubDate>Sat, 06 Apr 2019 14:35:22 +0800</pubDate><description><![CDATA[题目描述
见原网址：
235. 二叉搜索树的最近公共祖先
236. 二叉树的最近公共祖先
分析
LCA（Lowest Common Ancestors）问题，即最近公共祖先。
235
根据二分搜索树的性质，某个节点的左子树所有的值均小于该节点的值，而右子树所有节点的值均大于该节点的值，所以有三种情况：

p、q 的值均小于节点的值，则在节点左子树中寻找公共祖先
p、q 的值均大于节点的值，则在节点...]]></description><category></category></item><item><title><![CDATA[[Leetcode 349 350] 两个数组的交集 两个数组的交集 II (python)]]></title><link>https://blog.youkuaiyun.com/pl0321/article/details/89037743</link><guid>https://blog.youkuaiyun.com/pl0321/article/details/89037743</guid><author>pl0321</author><pubDate>Fri, 05 Apr 2019 00:24:11 +0800</pubDate><description><![CDATA[题目描述

349
给定两个数组，编写一个函数来计算它们的交集。
示例 1:
输入: nums1 = [1,2,2,1], nums2 = [2,2]
输出: [2]
示例 2:
输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出: [9,4]


350
给定两个数组，编写一个函数来计算它们的交集。
示例 1:
输入: nums1 = [1,2,2,1], n...]]></description><category></category></item></channel></rss>