<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[R]]></title><description><![CDATA[R'sBelief]]></description><link>https://blog.youkuaiyun.com/bmicnj</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; bmicnj]]></copyright><item><title><![CDATA[leetcode 2029. 石子游戏 IX【贪心】]]></title><link>https://blog.youkuaiyun.com/bmicnj/article/details/122613461</link><guid>https://blog.youkuaiyun.com/bmicnj/article/details/122613461</guid><author>bmicnj</author><pubDate>Fri, 21 Jan 2022 02:00:51 +0800</pubDate><description><![CDATA[题意：采用最佳决策，尽量使A赢，A赢的条件是既不能拿到和为3的倍数的数，又不能是最后一个拿数的人。
code:

# 0 有偶数个：
# 将所有插在第一位和第二位之间，A取任意一个，中间的0相当于无效操作，
# 如果1和2的个数都是0个，A必输；
# 如果1或2的个数不为0个，少于等于2个时，石子取完，判定A输，大于等于3个是，A拿到3的倍数个，A必输；
# 如果1和2的个数都不为0，A先去少的那一个时，A必赢；

# 0 有奇数个：
# 将所有插在第一位和第二位之间，之后相当于 新的一轮博弈 且是A开头.]]></description><category></category></item><item><title><![CDATA[本地通过跳板机连接服务器开发]]></title><link>https://blog.youkuaiyun.com/bmicnj/article/details/122607784</link><guid>https://blog.youkuaiyun.com/bmicnj/article/details/122607784</guid><author>bmicnj</author><pubDate>Thu, 20 Jan 2022 19:11:33 +0800</pubDate><description><![CDATA[mobaXterm通过跳板机连接服务器


ssh 连接跳板机
填写跳板机IP，用户名，然后点击“OK”，根据提示输入密码。



ssh 通过跳板机连接服务器
点击“OK”之后，根据提示输入服务器的密码，（上一步已经保存了跳板机的密码）。



建立本地-&gt;服务器的tunneling



pycharm 连接服务器
开启tunneling,配置解释器。



然后 Tools -&gt; deployment -&gt; Configuration -&gt; 选中"用户名@localhost:p]]></description><category></category></item><item><title><![CDATA[leetcode 1576. 替换所有的问号]]></title><link>https://blog.youkuaiyun.com/bmicnj/article/details/122335071</link><guid>https://blog.youkuaiyun.com/bmicnj/article/details/122335071</guid><author>bmicnj</author><pubDate>Thu, 06 Jan 2022 00:20:18 +0800</pubDate><description><![CDATA[class Solution:
    def modifyString(self, s: str) -&gt; str:
        n = len(s)
        s = list('?' + s + '?')
        for i in range(1, n + 1):
            if s[i] != '?':
                continue
            else:
                l = s[i - 1]
        .]]></description><category></category></item><item><title><![CDATA[leetcode 1610. 可见点的最大数目 【几何+滑动窗口】]]></title><link>https://blog.youkuaiyun.com/bmicnj/article/details/121996856</link><guid>https://blog.youkuaiyun.com/bmicnj/article/details/121996856</guid><author>bmicnj</author><pubDate>Fri, 17 Dec 2021 15:20:07 +0800</pubDate><description><![CDATA[思路：
题意是，站在观察点location的位置，在视角angle的范围内，可以看到的最多的点个数，且同一直线遮挡的或者重叠的点可以记为多个。
先计算每个点与location的直线与x正轴之间的夹角，并从小到大排序。以每个夹角上的点为视线的起始范围，遍历比它大的角度，寻找能构成最大视角的右边界点。
计算夹角可以用math.atan2(y, x), 它的范围为(-pi, pi), 因为视角的范围是360度的环，故给每个角加360度，加入角度列表。
code:
class Solution:
    def .]]></description><category></category></item><item><title><![CDATA[leetcode 630. 课程表 III【贪心+堆排序（优先队列）】]]></title><link>https://blog.youkuaiyun.com/bmicnj/article/details/121956711</link><guid>https://blog.youkuaiyun.com/bmicnj/article/details/121956711</guid><author>bmicnj</author><pubDate>Wed, 15 Dec 2021 17:02:39 +0800</pubDate><description><![CDATA[思路：
先按结束时间从小到大排序。逐个添加新课程，如果添加新课程后的结束时间大于等于新课程的结束时间，用新课程替换已选课程中持续时间最长且大于新课程的持续时间的课程。如果添加新课程后的结束时间小于新课程的结束时间，说明新课程可以直接选。
code:
class Solution:
    def scheduleCourse(self, courses: List[List[int]]) -&gt; int:
        """先按结束时间从小到大排序。逐个添加新课程，如果添加新课程后的结束时间大于等.]]></description><category></category></item><item><title><![CDATA[leetcode 794. 有效的井字游戏【数组+思维】]]></title><link>https://blog.youkuaiyun.com/bmicnj/article/details/121846708</link><guid>https://blog.youkuaiyun.com/bmicnj/article/details/121846708</guid><author>bmicnj</author><pubDate>Thu, 09 Dec 2021 23:52:03 +0800</pubDate><description><![CDATA[思路：
计算正确的可能情况。
第一种：O 走最后一步，X和O的个数相等，X则没有形成三连串， O可能形成0~2条三连串。
第二种：X 走最后一步，X个数比O多1，O则没有形成三连串，X可能形成0~2条三连串。
code:
class Solution:
    def validTicTacToe(self, board: List[str]) -&gt; bool:
        def judge(board, ch):
            cnt = 0
            for i...]]></description><category></category></item><item><title><![CDATA[leetcode 1034. 边界着色【BFS】]]></title><link>https://blog.youkuaiyun.com/bmicnj/article/details/121786763</link><guid>https://blog.youkuaiyun.com/bmicnj/article/details/121786763</guid><author>bmicnj</author><pubDate>Wed, 08 Dec 2021 11:09:29 +0800</pubDate><description><![CDATA[import queue

class Solution:
    def colorBorder(self, grid: List[List[int]], row: int, col: int, color: int) -&gt; List[List[int]]:
        
        def judeg(grid, x, y, m, n, dir, source):
            if x == 0 or y == 0 or x == m-1 or y == n-1:
     .]]></description><category></category></item><item><title><![CDATA[leetcode 372. 超级次方【同余定理+递推】]]></title><link>https://blog.youkuaiyun.com/bmicnj/article/details/121743051</link><guid>https://blog.youkuaiyun.com/bmicnj/article/details/121743051</guid><author>bmicnj</author><pubDate>Mon, 06 Dec 2021 11:21:00 +0800</pubDate><description><![CDATA[思路：

递推公式：

class Solution:
    def superPow(self, a: int, b: List[int]) -&gt; int:
        mod = 1337
        ans = 1
        a = a % mod
        for i in b:
            ans = pow(ans, 10, mod) * pow(a, i, mod ) % mod
        return ans


...]]></description><category></category></item><item><title><![CDATA[leetcode 400. 第 N 位数字 【数学】]]></title><link>https://blog.youkuaiyun.com/bmicnj/article/details/121645898</link><guid>https://blog.youkuaiyun.com/bmicnj/article/details/121645898</guid><author>bmicnj</author><pubDate>Wed, 01 Dec 2021 00:08:55 +0800</pubDate><description><![CDATA[class Solution:
    def findNthDigit(self, n: int) -&gt; int:
        """
        统计位数为m的数字的个数，并且乘以m，就等于数字字符串的位数。
        """
        i = 1  # 整数的位数
        cnt = 0
        zeros = 0
        # 寻找第n位数字可能存在于哪个整数区间
        while n &gt; cnt + 9 * pow(10, zero.]]></description><category></category></item><item><title><![CDATA[leetcode 423.从英文中重建数字【哈希表+字符串】]]></title><link>https://blog.youkuaiyun.com/bmicnj/article/details/121527942</link><guid>https://blog.youkuaiyun.com/bmicnj/article/details/121527942</guid><author>bmicnj</author><pubDate>Wed, 24 Nov 2021 23:46:15 +0800</pubDate><description><![CDATA[思路：
找出每个数字的英文单词中独特的字符，或独特字符的个数的差。
code:
"""
找出每个数字的英文单词中独特的字符，或独特字符的个数的差
"""
class Solution:
    def originalDigits(self, s: str) -&gt; str:
        ch = ["e","g","f","i","h","o","n","s","r","u","t","w","v","x","z"]
        # 哈希表。存储每个字符的个数
        num = d.]]></description><category></category></item><item><title><![CDATA[leetcode 1382. 将二叉搜索树变平衡 【二叉搜索树】]]></title><link>https://blog.youkuaiyun.com/bmicnj/article/details/121312347</link><guid>https://blog.youkuaiyun.com/bmicnj/article/details/121312347</guid><author>bmicnj</author><pubDate>Sat, 13 Nov 2021 23:51:40 +0800</pubDate><description><![CDATA[思路：
首先将二叉搜索树由中序遍历得到有序的节点序列。
然后创建一棵平衡二叉树。
code:
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
.]]></description><category></category></item><item><title><![CDATA[leetcode 629. K个逆序对数组【dp】]]></title><link>https://blog.youkuaiyun.com/bmicnj/article/details/121285731</link><guid>https://blog.youkuaiyun.com/bmicnj/article/details/121285731</guid><author>bmicnj</author><pubDate>Fri, 12 Nov 2021 12:38:46 +0800</pubDate><description><![CDATA[思路：
引用一篇不错的推导。
由于dp[n, k] 仅由dp[n-1, …] 和 dp[n, …] 转移而来，因此可以对动态规划使用的空间进行优化，即使用两个一维数组交替地进行状态转移，空间复杂度从O(nk)降低为O(k).用dp[j] 表示当前数字i 构成j个逆序对。
时间复杂度O(nk).

code:
class Solution:
    def kInversePairs(self, n: int, k: int) -&gt; int:
        mod = int(1e9) + 7
   ]]></description><category></category></item><item><title><![CDATA[leetcode medium 845. 数组中的最长山脉 【双指针】]]></title><link>https://blog.youkuaiyun.com/bmicnj/article/details/121223888</link><guid>https://blog.youkuaiyun.com/bmicnj/article/details/121223888</guid><author>bmicnj</author><pubDate>Tue, 09 Nov 2021 11:13:37 +0800</pubDate><description><![CDATA[思路：
将序列分为三种阶段：

递增阶段. 持续递增，或者遇到新的递增序列 重置起点。
递减阶段. 在前一段是递增的情况下，持续计算起点到当前点的距离。
平缓阶段. 重置起点为-1，不可以重置为当前点，否则进入阶段2会产生无峰值的单调递减序列。

code：
class Solution:
    def longestMountain(self, arr: List[int]) -&gt; int:
        start = -1
        ans = 0
        for i in .]]></description><category></category></item><item><title><![CDATA[leetcode 367. 有效的完全平方数【二分查找】]]></title><link>https://blog.youkuaiyun.com/bmicnj/article/details/121154060</link><guid>https://blog.youkuaiyun.com/bmicnj/article/details/121154060</guid><author>bmicnj</author><pubDate>Thu, 04 Nov 2021 23:35:07 +0800</pubDate><description><![CDATA[code:
class Solution:
    def isPerfectSquare(self, num: int) -&gt; bool:
        l, r = 0, num
        while l &lt;= r:
            mid = (l + r) // 2
            if mid * mid == num:
                return True
            elif mid * mid &lt; num:
     .]]></description><category></category></item><item><title><![CDATA[leetcode 407. 接雨水 II【BFS】]]></title><link>https://blog.youkuaiyun.com/bmicnj/article/details/121136942</link><guid>https://blog.youkuaiyun.com/bmicnj/article/details/121136942</guid><author>bmicnj</author><pubDate>Thu, 04 Nov 2021 10:22:40 +0800</pubDate><description><![CDATA[给你一个 m x n 的矩阵，其中的值均为非负整数，代表二维高度图每个单元的高度，请计算图中形状最多能接多少体积的雨水。
示例 1:
输入: heightMap = [[1,4,3,1,3,2],[3,2,1,3,2,4],[2,3,3,2,3,1]]
输出: 4
解释: 下雨后，雨水将会被上图蓝色的方块中。总的接雨水量为1+2+1=4。
示例 2:
输入: heightMap = [[3,3,3,3,3],[3,2,2,2,3],[3,2,1,2,3],[3,2,2,2,3],[3,3,3,3,3]]
输]]></description><category></category></item><item><title><![CDATA[leetcode 260. 只出现一次的数字 III【位运算】]]></title><link>https://blog.youkuaiyun.com/bmicnj/article/details/121058426</link><guid>https://blog.youkuaiyun.com/bmicnj/article/details/121058426</guid><author>bmicnj</author><pubDate>Sat, 30 Oct 2021 23:27:08 +0800</pubDate><description><![CDATA[给定一个整数数组 nums，其中恰好有两个元素只出现一次，其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。
进阶：你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现？
示例 1：
输入：nums = [1,2,1,3,2,5]
输出：[3,5]
解释：[5, 3] 也是有效的答案。
示例 2：
输入：nums = [-1,0]
输出：[-1,0]
示例 3：
输入：nums = [0,1]
输出：[1,0]
提示：
2 &lt;= nums.length &]]></description><category></category></item><item><title><![CDATA[leetcode 335. 路径交叉【归纳】]]></title><link>https://blog.youkuaiyun.com/bmicnj/article/details/121053962</link><guid>https://blog.youkuaiyun.com/bmicnj/article/details/121053962</guid><author>bmicnj</author><pubDate>Sat, 30 Oct 2021 17:39:18 +0800</pubDate><description><![CDATA[给你一个整数数组 distance 。
从 X-Y 平面上的点 (0,0) 开始，先向北移动 distance[0] 米，然后向西移动 distance[1] 米，向南移动 distance[2
] 米，向东移动 distance[3] 米，持续移动。也就是说，每次移动后你的方位会发生逆时针变化。
判断你所经过的路径是否相交。如果相交，返回 true ；否则，返回 false 。
示例 1：
![在这里插入图片描述](https://img-blog.csdnimg.cn/d2d984afb9924504b]]></description><category></category></item><item><title><![CDATA[leetcode 496.下一个更大元素I 【单调栈+哈希表】]]></title><link>https://blog.youkuaiyun.com/bmicnj/article/details/120983137</link><guid>https://blog.youkuaiyun.com/bmicnj/article/details/120983137</guid><author>bmicnj</author><pubDate>Tue, 26 Oct 2021 22:54:30 +0800</pubDate><description><![CDATA[给你两个 没有重复元素 的数组 nums1 和 nums2 ，其中nums1 是 nums2 的子集。
请你找出 nums1 中每个元素在 nums2 中的下一个比其大的值。
nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在，对应位置输出 -1 。
示例 1:
输入: nums1 = [4,1,2], nums2 = [1,3,4,2].
输出: [-1,3,-1]
解释:
对于 num1 中的数字 4 ，你无法在第二个数组中找到下一个更]]></description><category></category></item><item><title><![CDATA[leetcode 492.构造矩形]]></title><link>https://blog.youkuaiyun.com/bmicnj/article/details/120927746</link><guid>https://blog.youkuaiyun.com/bmicnj/article/details/120927746</guid><author>bmicnj</author><pubDate>Sat, 23 Oct 2021 22:53:17 +0800</pubDate><description><![CDATA[作为一位web开发者， 懂得怎样去规划一个页面的尺寸是很重要的。 现给定一个具体的矩形页面面积，你的任务是设计一个长度为 L 和宽度为 W 且满足以下要求的
矩形的页面。要求：


你设计的矩形页面必须等于给定的目标面积。


宽度 W 不应大于长度 L，换言之，要求 L &gt;= W 。


长度 L 和宽度 W 之间的差距应当尽可能小。


你需要按顺序输出你设计的页面的长度 L 和宽度 W。
示例：
输入: 4
输出: [2, 2]
解释: 目标面积是 4， 所有可能的构造方案有 [1,4], [2]]></description><category></category></item><item><title><![CDATA[leetcode 229.求众数 II【摩尔投票法】]]></title><link>https://blog.youkuaiyun.com/bmicnj/article/details/120917309</link><guid>https://blog.youkuaiyun.com/bmicnj/article/details/120917309</guid><author>bmicnj</author><pubDate>Sat, 23 Oct 2021 10:00:26 +0800</pubDate><description><![CDATA[给定一个大小为 n 的整数数组，找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。
示例 1：
输入：[3,2,3]
输出：[3]
示例 2：
输入：nums = [1]
输出：[1]
示例 3：
输入：[1,1,1,3,3,2,2,2]
输出：[1,2]
提示：
1 &lt;= nums.length &lt;= 5 * 104
-109 &lt;= nums[i] &lt;= 109
思路：摩尔投票法，分为两盒阶段：配对阶段和计数阶段。
如果至多选一个代表，那他的票数至少要超过一半（⌊ 1/2 ⌋）的票数]]></description><category></category></item></channel></rss>