<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[PaperReader的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/PaperReader</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; PaperReader]]></copyright><item><title><![CDATA[二叉树专题]]></title><link>https://blog.youkuaiyun.com/PaperReader/article/details/129674797</link><guid>https://blog.youkuaiyun.com/PaperReader/article/details/129674797</guid><author>PaperReader</author><pubDate>Tue, 21 Mar 2023 21:59:31 +0800</pubDate><description><![CDATA[笨方法是先吧链表转化成有序数组，之后就是108题一模一样了。但是这么做肯定不是最优解，但是时间复杂度应该是很低了。，但是官方解答中上面的代码为了优雅一些可能，多走了下面连个dfs两次，所以造成了很多人误解。上面的代码其实不是很好理解，因为安扎去哦正常的回溯，满足条件之后可以直接。这个就完全没有任何的规律，只有不断地试。BFS版本上面两道题代码一模一样。要充分利用二叉搜索树的特性。要使用逆向的中序遍历。]]></description><category></category></item><item><title><![CDATA[【LeetCode热题100】]]></title><link>https://blog.youkuaiyun.com/PaperReader/article/details/127291963</link><guid>https://blog.youkuaiyun.com/PaperReader/article/details/127291963</guid><author>PaperReader</author><pubDate>Mon, 20 Mar 2023 19:34:38 +0800</pubDate><description><![CDATA[LeetCode热题10022. 括号生成（🎂）76. 最小覆盖子串（🎂）15. 三数之和（🎂）105. 从前序与中序遍历序列构造二叉树（🎂）56. 合并区间（🎂）200. 岛屿数量105. 岛屿的最大面积463. 岛屿的周长（🎂）827. 最大人工岛（🎂）239. 滑动窗口最大值17. 电话号码的字母组合75. 颜色分类79. 单词搜索32. 最长有效括号（🎂）33. 搜索旋转排序数组（🎂）39. 组合总和48. 旋转图像（🎂）64. 最小路径和70. 爬楼梯72. 编辑距离（🎂 原问题很简单，注意变体，]]></description><category></category></item><item><title><![CDATA[《剑指offer》第二版]]></title><link>https://blog.youkuaiyun.com/PaperReader/article/details/129069476</link><guid>https://blog.youkuaiyun.com/PaperReader/article/details/129069476</guid><author>PaperReader</author><pubDate>Wed, 22 Feb 2023 23:16:32 +0800</pubDate><description><![CDATA[剑指offer]]></description><category></category></item><item><title><![CDATA[解决ImportError: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21‘ not found]]></title><link>https://blog.youkuaiyun.com/PaperReader/article/details/127422591</link><guid>https://blog.youkuaiyun.com/PaperReader/article/details/127422591</guid><author>PaperReader</author><pubDate>Thu, 20 Oct 2022 10:54:44 +0800</pubDate><description><![CDATA[bug]]></description><category></category></item><item><title><![CDATA[【日常】2022年4月25日 - 2022年5月1日]]></title><link>https://blog.youkuaiyun.com/PaperReader/article/details/124440544</link><guid>https://blog.youkuaiyun.com/PaperReader/article/details/124440544</guid><author>PaperReader</author><pubDate>Mon, 02 May 2022 23:00:18 +0800</pubDate><description><![CDATA[日常刷题23. 合并K个升序链表（Hard）
23. 合并K个升序链表（Hard）
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def mergeKLists(self, lists: List[Optional[]]></description><category></category></item><item><title><![CDATA[【日常】2022年4月19日 - 2022年4月25日]]></title><link>https://blog.youkuaiyun.com/PaperReader/article/details/124278023</link><guid>https://blog.youkuaiyun.com/PaperReader/article/details/124278023</guid><author>PaperReader</author><pubDate>Wed, 20 Apr 2022 10:11:21 +0800</pubDate><description><![CDATA[日常刷题821. 字符的最短距离（Easy）230. 二叉搜索树中第K小的元素（Medium）
821. 字符的最短距离（Easy）
4月19号的每日一题。一道简单题。
做法1：遍历每一个位置ｉ，然后在ｉ处定义两个指针left,rightleft, rightleft,right，两个指针同时向左右移动，当其中一个到头的时候，只移动另一个。直到两个指针中至少有一个指向的字符为目标ccc。
想法很简单，复杂度很高。为O(n2)O(n^2)O(n2)
class Solution:
    def shorte]]></description><category></category></item><item><title><![CDATA[【日常】2022年4月11日 - 2022年4月18日]]></title><link>https://blog.youkuaiyun.com/PaperReader/article/details/124113061</link><guid>https://blog.youkuaiyun.com/PaperReader/article/details/124113061</guid><author>PaperReader</author><pubDate>Tue, 12 Apr 2022 13:47:41 +0800</pubDate><description><![CDATA[日常刷题剑指 Offer II 105. 岛屿的最大面积114. 二叉树展开为链表113. 路径总和 II129. 求根节点到叶节点数字之和
剑指 Offer II 105. 岛屿的最大面积
比较简单的一道题，和之前那个求岛屿数量的差不多，都是同样的递归，但是求最大面积需要记录每隔岛屿的面积，然后求最大。这里递归有两种写法。本质上差不多。
class Solution:
    def maxAreaOfIsland(self, grid: List[List[int]]) -&gt; int:
     ]]></description><category></category></item><item><title><![CDATA[【日常】2022年4月4日 - 2022年4月10日]]></title><link>https://blog.youkuaiyun.com/PaperReader/article/details/123962897</link><guid>https://blog.youkuaiyun.com/PaperReader/article/details/123962897</guid><author>PaperReader</author><pubDate>Tue, 05 Apr 2022 23:49:24 +0800</pubDate><description><![CDATA[2022年4月4日 - 2022年4月`在这里插入代码片`10日72. 编辑距离（Hard）53. 最大子数组和（Easy）
72. 编辑距离（Hard）
编辑距离算是动态规划里面难度比较高的一道题了，但是也并不是很难，只要知道了思路。
class Solution:
    def minDistance(self, word1: str, word2: str) -&gt; int:
        # if not word1: return len(word2)
        # if not w]]></description><category></category></item><item><title><![CDATA[【日常】2022年3月28日 - 2022年4月3日]]></title><link>https://blog.youkuaiyun.com/PaperReader/article/details/123809834</link><guid>https://blog.youkuaiyun.com/PaperReader/article/details/123809834</guid><author>PaperReader</author><pubDate>Tue, 29 Mar 2022 00:04:29 +0800</pubDate><description><![CDATA[日常刷题49. 字母异位词分组(Medium)
49. 字母异位词分组(Medium)
判断两个词是不是字母异位词最简单的方法就是排序，字符串是可以排序的，排序返回的是一个list。当然也可以使用哈希表判断每一个词出现的个数，这也时间复杂度会低，但是代码显得麻烦。
本题是要把所有的字母异位词放到一起，最暴力的方法就是两层循环，每次比对两个字符串，对他们进行排序，看看一样不一样，一样的话说明属于同一个字母异位词。这样做最好不要使用for循环，因为for循环需要从头遍历到尾，内存循环可能会提前将后面的一个词归于]]></description><category></category></item><item><title><![CDATA[【日常】2022年3月21日 - 2022年3月27日]]></title><link>https://blog.youkuaiyun.com/PaperReader/article/details/123649256</link><guid>https://blog.youkuaiyun.com/PaperReader/article/details/123649256</guid><author>PaperReader</author><pubDate>Tue, 22 Mar 2022 00:00:05 +0800</pubDate><description><![CDATA[二叉树700. 二叉搜索树中的搜索98. 验证二叉搜索树530. 二叉搜索树的最小绝对差501. 二叉搜索树中的众数
700. 二叉搜索树中的搜索
传送门
比较简单，递归和迭代都可以。
class Solution:
    def searchBST(self, root: TreeNode, val: int) -&gt; TreeNode:
        if not root: return None
        if root.val == val: return root

       ]]></description><category></category></item><item><title><![CDATA[【周赛】第285常周赛]]></title><link>https://blog.youkuaiyun.com/PaperReader/article/details/123619886</link><guid>https://blog.youkuaiyun.com/PaperReader/article/details/123619886</guid><author>PaperReader</author><pubDate>Sun, 20 Mar 2022 21:12:21 +0800</pubDate><description><![CDATA[第285常周赛6027. 统计数组中峰和谷的数量6028. 统计道路上的碰撞次数6029. 射箭比赛中的最大得分6030. 由单个字符重复的最长子字符串
6027. 统计数组中峰和谷的数量

第一题其实不算难，但是我写的解法还是很low，虽然复杂度不算特别高，但是代码还是很冗余，不过居然也不是特别耗时，只需要40ms，15mb内存。
思路也很简单，就是遍历，每次找到左边最近的不相等的数和右边最近的一个不相等的数。找到之后，比较一下，看看是峰还是谷。但是如果这个峰/谷不止一个数字，比如12221，此时只有一个]]></description><category></category></item><item><title><![CDATA[【双周赛】第74场双周赛]]></title><link>https://blog.youkuaiyun.com/PaperReader/article/details/123619216</link><guid>https://blog.youkuaiyun.com/PaperReader/article/details/123619216</guid><author>PaperReader</author><pubDate>Sun, 20 Mar 2022 19:55:09 +0800</pubDate><description><![CDATA[第74场双周赛6020. 将数组划分成相等数对6021. 字符串中最多数目的子字符串6022. 将数组和减半的最少操作次数6023. 用地毯覆盖后的最少白色砖块
6020. 将数组划分成相等数对

第一题很简单，不到一分钟就可以做出来了。思路就是统计每一个数字出现的次数，只有所有数字都出现过偶数次，才满足要求。
class Solution:
    def divideArray(self, nums: List[int]) -&gt; bool:
        # 判断数组是否每一个数字都出现过偶数次]]></description><category></category></item></channel></rss>