<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[lithbitren的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/lithbitren</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lithbitren]]></copyright><item><title><![CDATA[用JavaScript实现Python的range迭代器]]></title><link>https://blog.youkuaiyun.com/lithbitren/article/details/133621577</link><guid>https://blog.youkuaiyun.com/lithbitren/article/details/133621577</guid><author>lithbitren</author><pubDate>Fri, 06 Oct 2023 21:47:41 +0800</pubDate><description><![CDATA[JavaScript没有Python那样丰富的魔法函数，就算用class来定义，也无法做到像Python那样丝滑的直接使用（每次用都要new一下），唯一的好处可能就是方便比较两个不同的range迭代器的状态（因为不能运算符重载，也只能是转成字符串比较），但讲实话这个功能在实际代码中应用确实很少。]]></description><category></category></item><item><title><![CDATA[Python3循环引用还是会自动垃圾回收的。]]></title><link>https://blog.youkuaiyun.com/lithbitren/article/details/104845726</link><guid>https://blog.youkuaiyun.com/lithbitren/article/details/104845726</guid><author>lithbitren</author><pubDate>Fri, 13 Mar 2020 17:35:42 +0800</pubDate><description><![CDATA[以前都听说Python循环引用会导致引用数无法清零，所以不能垃圾回收，会内存泄漏，需要删除引用关系或者用gc.collect()才能进行正常垃圾回收。

但做了下实验，好像还是会自动回收循环引用的变量，在约44对循环引用变量时会首次清理，之后大约每产生200对的垃圾就会清一次，但也没清干净，总是会有残留上几个，而且听说了改__del__会影响垃圾回收，实质上也不会影响。

进程内存监控，可以看出内...]]></description><category></category></item><item><title><![CDATA[5125. 不相交的握手]]></title><link>https://blog.youkuaiyun.com/lithbitren/article/details/103108510</link><guid>https://blog.youkuaiyun.com/lithbitren/article/details/103108510</guid><author>lithbitren</author><pubDate>Sun, 17 Nov 2019 14:26:42 +0800</pubDate><description><![CDATA[偶数个人站成一个圆，总人数为num_people。每个人与除自己外的一个人握手，所以总共会有num_people / 2次握手。

将握手的人之间连线，请你返回连线不会相交的握手方案数。

由于结果可能会很大，请你返回答案 模10^9+7后的结果。


示例 1：

输入：num_people = 2
输出：1
示例 2：



输入：num_people = 4
输出：2
解释：总...]]></description><category></category></item><item><title><![CDATA[5110. 近义词句子]]></title><link>https://blog.youkuaiyun.com/lithbitren/article/details/103108471</link><guid>https://blog.youkuaiyun.com/lithbitren/article/details/103108471</guid><author>lithbitren</author><pubDate>Sun, 17 Nov 2019 14:22:54 +0800</pubDate><description><![CDATA[给你一个近义词表synonyms 和一个句子text，synonyms 表中是一些近义词对 ，你可以将句子text 中每个单词用它的近义词来替换。

请你找出所有用近义词替换后的句子，按字典序排序后返回。



示例 1：

输入：
synonyms = [["happy","joy"],["sad","sorrow"],["joy","cheerful"]],
text = "I...]]></description><category></category></item><item><title><![CDATA[5109. 最小公共区域]]></title><link>https://blog.youkuaiyun.com/lithbitren/article/details/103108452</link><guid>https://blog.youkuaiyun.com/lithbitren/article/details/103108452</guid><author>lithbitren</author><pubDate>Sun, 17 Nov 2019 14:21:40 +0800</pubDate><description><![CDATA[给你一些区域列表regions ，每个列表的第一个区域都包含这个列表内所有其他区域。

很自然地，如果区域X 包含区域Y ，那么区域X 比区域Y 大。

给定两个区域region1和region2 ，找到同时包含这两个区域的最小区域。

如果区域列表中r1包含r2和r3 ，那么数据保证r2 不会包含r3。

数据同样保证最小公共区域一定存在。



示例 1...]]></description><category></category></item><item><title><![CDATA[5108. 加密数字]]></title><link>https://blog.youkuaiyun.com/lithbitren/article/details/103108430</link><guid>https://blog.youkuaiyun.com/lithbitren/article/details/103108430</guid><author>lithbitren</author><pubDate>Sun, 17 Nov 2019 14:19:59 +0800</pubDate><description><![CDATA[给你一个非负整数 num ，返回它的「加密字符串」。

加密的过程是把一个整数用某个未知函数进行转化，你需要从下表推测出该转化函数：



示例 1：

输入：num = 23
输出："1000"
示例 2：

输入：num = 107
输出："101100"


提示：

0 &lt;= num &lt;= 10^9



题解：

找规律完事


class Solution:
    d...]]></description><category></category></item><item><title><![CDATA[5098. 树的直径]]></title><link>https://blog.youkuaiyun.com/lithbitren/article/details/102882852</link><guid>https://blog.youkuaiyun.com/lithbitren/article/details/102882852</guid><author>lithbitren</author><pubDate>Sun, 03 Nov 2019 15:20:55 +0800</pubDate><description><![CDATA[给你这棵「无向树」，请你测算并返回它的「直径」：这棵树上最长简单路径的 边数。

我们用一个由所有「边」组成的数组 edges来表示一棵无向树，其中edges[i] = [u, v]表示节点u 和 v之间的双向边。

树上的节点都已经用{0, 1, ..., edges.length}中的数做了标记，每个节点上的标记都是独一无二的。



示例 1：

输入：edges = [[0...]]></description><category></category></item><item><title><![CDATA[5097. 力扣排行榜]]></title><link>https://blog.youkuaiyun.com/lithbitren/article/details/102882564</link><guid>https://blog.youkuaiyun.com/lithbitren/article/details/102882564</guid><author>lithbitren</author><pubDate>Sun, 03 Nov 2019 14:59:10 +0800</pubDate><description><![CDATA[新一轮的「力扣杯」编程大赛即将启动，为了动态显示参赛者的得分数据，需要设计一个排行榜 Leaderboard。

请你帮忙来设计这个Leaderboard 类，使得它有如下3 个函数：

addScore(playerId, score)：
假如参赛者已经在排行榜上，就给他的当前得分增加score点分值并更新排行。
假如该参赛者不在排行榜上，就把他添加到榜单上，并且将分数设置为score...]]></description><category></category></item><item><title><![CDATA[5096. 数组变换]]></title><link>https://blog.youkuaiyun.com/lithbitren/article/details/102882281</link><guid>https://blog.youkuaiyun.com/lithbitren/article/details/102882281</guid><author>lithbitren</author><pubDate>Sun, 03 Nov 2019 14:39:34 +0800</pubDate><description><![CDATA[首先，给你一个初始数组 arr。然后，每天你都要根据前一天的数组生成一个新的数组。

第i天所生成的数组，是由你对第i-1天的数组进行如下操作所得的：

假如一个元素小于它的左右邻居，那么该元素自增 1。
假如一个元素大于它的左右邻居，那么该元素自减 1。
首、尾元素 永不改变。
过些时日，你会发现数组将会不再发生变化，请返回最终所得到的数组。



示例 1：

输入：[6,2,3,...]]></description><category></category></item><item><title><![CDATA[5115. 删除回文子数组]]></title><link>https://blog.youkuaiyun.com/lithbitren/article/details/102882225</link><guid>https://blog.youkuaiyun.com/lithbitren/article/details/102882225</guid><author>lithbitren</author><pubDate>Sun, 03 Nov 2019 14:29:46 +0800</pubDate><description><![CDATA[给你一个整数数组arr，每一次操作你都可以选择并删除它的一个 回文 子数组arr[i], arr[i+1], ..., arr[j]（ i &lt;= j）。

注意，每当你删除掉一个子数组，右侧元素都会自行向前移动填补空位。

请你计算并返回从数组中删除所有数字所需的最少操作次数。



示例 1：

输入：arr = [1,2]
输出：2
示例 2：

输入：arr = [1,3,4,1...]]></description><category></category></item><item><title><![CDATA[5088. 等差数列中缺失的数字]]></title><link>https://blog.youkuaiyun.com/lithbitren/article/details/102656199</link><guid>https://blog.youkuaiyun.com/lithbitren/article/details/102656199</guid><author>lithbitren</author><pubDate>Mon, 21 Oct 2019 00:40:48 +0800</pubDate><description><![CDATA[有一个数组，其中的值符合等差数列的数值规律，也就是说：

在0 &lt;= i &lt; arr.length - 1的前提下，arr[i+1] - arr[i]的值都相等。
我们会从该数组中删除一个 既不是第一个 也不是最后一个的值，得到一个新的数组arr。

给你这个缺值的数组arr，请你帮忙找出被删除的那个数。



示例 1：

输入：arr = [5,7,11,13]
输...]]></description><category></category></item><item><title><![CDATA[5089. 安排会议日程]]></title><link>https://blog.youkuaiyun.com/lithbitren/article/details/102656150</link><guid>https://blog.youkuaiyun.com/lithbitren/article/details/102656150</guid><author>lithbitren</author><pubDate>Mon, 21 Oct 2019 00:38:14 +0800</pubDate><description><![CDATA[你是一名行政助理，手里有两位客户的空闲时间表：slots1 和 slots2，以及会议的预计持续时间duration，请你为他们安排合适的会议时间。

「会议时间」是两位客户都有空参加，并且持续时间能够满足预计时间duration 的 最早的时间间隔。

如果没有满足要求的会议时间，就请返回一个 空数组。



「空闲时间」的格式是[start, end]，由开始时间start和结束时...]]></description><category></category></item><item><title><![CDATA[5111. 分享巧克力]]></title><link>https://blog.youkuaiyun.com/lithbitren/article/details/102652164</link><guid>https://blog.youkuaiyun.com/lithbitren/article/details/102652164</guid><author>lithbitren</author><pubDate>Sun, 20 Oct 2019 19:07:46 +0800</pubDate><description><![CDATA[你有一大块巧克力，它由一些甜度不完全相同的小块组成。我们用数组sweetness来表示每一小块的甜度。

你打算和K名朋友一起分享这块巧克力，所以你需要将切割K次才能得到 K+1块，每一块都由一些 连续的小块组成。

为了表现出你的慷慨，你将会吃掉总甜度最小 的一块，并将其余几块分给你的朋友们。

请找出一个最佳的切割策略，使得你所分得的巧克力总甜度最大，并返回这个 最大总甜度...]]></description><category></category></item><item><title><![CDATA[5090. 抛掷硬币]]></title><link>https://blog.youkuaiyun.com/lithbitren/article/details/102652060</link><guid>https://blog.youkuaiyun.com/lithbitren/article/details/102652060</guid><author>lithbitren</author><pubDate>Sun, 20 Oct 2019 18:58:55 +0800</pubDate><description><![CDATA[有一些不规则的硬币。在这些硬币中，prob[i]表示第i枚硬币正面朝上的概率。

请对每一枚硬币抛掷一次，然后返回正面朝上的硬币数等于target的概率。



示例 1：

输入：prob = [0.4], target = 1
输出：0.40000
示例 2：

输入：prob = [0.5,0.5,0.5,0.5,0.5], target = 0
输出：0.03125


提...]]></description><category></category></item><item><title><![CDATA[Python，不定参数/多参数，柯里化]]></title><link>https://blog.youkuaiyun.com/lithbitren/article/details/102582965</link><guid>https://blog.youkuaiyun.com/lithbitren/article/details/102582965</guid><author>lithbitren</author><pubDate>Wed, 16 Oct 2019 11:56:25 +0800</pubDate><description><![CDATA[python不像js那样，函数可以有方便的tostring，所以必须得作一些特殊处理。

方法一，纯函数法，需要加()作为终止。


def add(*x):
    args = [*x]
    def _add(*y):
        if y:
            args.extend(y)
            return _add
        else:
       ...]]></description><category></category></item><item><title><![CDATA[LeetCode ： 5073. 进击的骑士]]></title><link>https://blog.youkuaiyun.com/lithbitren/article/details/101171868</link><guid>https://blog.youkuaiyun.com/lithbitren/article/details/101171868</guid><author>lithbitren</author><pubDate>Sun, 22 Sep 2019 20:52:42 +0800</pubDate><description><![CDATA[5073.进击的骑士



一个坐标可以从-infinity延伸到+infinity的无限大的棋盘上，你的骑士驻扎在坐标为[0, 0]的方格里。

骑士的走法和中国象棋中的马相似，走 “日” 字：即先向左（或右）走 1 格，再向上（或下）走 2 格；或先向左（或右）走 2 格，再向上（或下）走 1 格。

每次移动，他都可以按图示八个方向之一前进。



现在，骑士需要前去...]]></description><category></category></item><item><title><![CDATA[LeetCode ： 5071. 找出所有行中最小公共元素]]></title><link>https://blog.youkuaiyun.com/lithbitren/article/details/101170424</link><guid>https://blog.youkuaiyun.com/lithbitren/article/details/101170424</guid><author>lithbitren</author><pubDate>Sun, 22 Sep 2019 20:11:46 +0800</pubDate><description><![CDATA[5071.找出所有行中最小公共元素



给你一个矩阵mat，其中每一行的元素都已经按递增顺序排好了。请你帮忙找出在所有这些行中最小的公共元素。

如果矩阵中没有这样的公共元素，就请返回-1。



示例：


输入：mat = [[1,2,3,4,5],[2,4,5,8,10],[3,5,7,9,11],[1,3,5,7,9]]
输出：5




提示：

1 &lt;= ma...]]></description><category></category></item><item><title><![CDATA[LeetCode：5072. 最多可以买到的苹果数量]]></title><link>https://blog.youkuaiyun.com/lithbitren/article/details/101170278</link><guid>https://blog.youkuaiyun.com/lithbitren/article/details/101170278</guid><author>lithbitren</author><pubDate>Sun, 22 Sep 2019 20:07:24 +0800</pubDate><description><![CDATA[5072.最多可以买到的苹果数量



楼下水果店正在促销，你打算买些苹果，arr[i]表示第i个苹果的单位重量。

你有一个购物袋，最多可以装5000单位重量的东西，算一算，最多可以往购物袋里装入多少苹果。



示例 1：


输入：arr = [100,200,150,1000]
输出：4
解释：所有 4 个苹果都可以装进去，因为它们的重量之和为 1450。


示例 2：
...]]></description><category></category></item><item><title><![CDATA[LeetCode ： 5091. 建造街区的最短时间]]></title><link>https://blog.youkuaiyun.com/lithbitren/article/details/101169835</link><guid>https://blog.youkuaiyun.com/lithbitren/article/details/101169835</guid><author>lithbitren</author><pubDate>Sun, 22 Sep 2019 19:56:33 +0800</pubDate><description><![CDATA[5091.建造街区的最短时间



你是个城市规划工作者，手里负责管辖一系列的街区。在这个街区列表中blocks[i] = t意味着第 i个街区需要t个单位的时间来建造。

由于一个街区只能由一个工人来完成建造。

所以，一个工人要么需要再召唤一个工人（工人数增加 1）；要么建造完一个街区后回家。这两个决定都需要花费一定的时间。

一个工人再召唤一个工人所花费的时间由整数s...]]></description><category></category></item><item><title><![CDATA[[L氏并查集] Python 列表法实现非递归并查集，轻松权重优化。]]></title><link>https://blog.youkuaiyun.com/lithbitren/article/details/97797639</link><guid>https://blog.youkuaiyun.com/lithbitren/article/details/97797639</guid><author>lithbitren</author><pubDate>Tue, 30 Jul 2019 17:19:13 +0800</pubDate><description><![CDATA[一般的并查集都是用递归或者新建一个类来实现，这里介绍一种用Python来实现的非递归非函数并查集，这个方法暂时未在其他地方见过，尤其是中文领域目前还未见过，很可能是搜索引擎无法搜索到正确内容的原因，所以不排除会有撞车的，LeetCode中文版上并查集的题目我基本都写了两种解，在那些题的题解里应该可以看到。（20190730）

假设存在N个点存在连通关系E：

N = 5, E= [[0, 1]...]]></description><category></category></item></channel></rss>