<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Hell_potato777的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Hell_potato777</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Hell_potato777]]></copyright><item><title><![CDATA[优快云竞赛第68期记录]]></title><link>https://blog.youkuaiyun.com/Hell_potato777/article/details/132121084</link><guid>https://blog.youkuaiyun.com/Hell_potato777/article/details/132121084</guid><author>Hell_potato777</author><pubDate>Sat, 05 Aug 2023 19:12:18 +0800</pubDate><description><![CDATA[需要1秒，从n号闸门到公主所在的位置也需要1秒，从p号闸门到p+1或p-1号闸门都需要1秒。波斯王子要去救被贾法尔囚禁的公主，但贾法尔用黑魔法在他面前设置了编号从1到n的n道闸门。从王子的位置到1号闸门。现在给出操作序列数据库和每一轮游戏的起始操作序列编号和结束操作序列编号，求每轮游戏结束时从左到右的小球编号。在王子做出动作选择后，闸门也可能会有关闭和开启的动作，如果王子做完动作后，其所在的闸。每个操作序列编号对应的操作，而每个操作序列编号对应的操作就是对该次操作指定的两个编号的位置上的小球进行对。]]></description><category></category></item><item><title><![CDATA[算法笔记-lc-870. 优势洗牌（中等）]]></title><link>https://blog.youkuaiyun.com/Hell_potato777/article/details/127218612</link><guid>https://blog.youkuaiyun.com/Hell_potato777/article/details/127218612</guid><author>Hell_potato777</author><pubDate>Wed, 12 Oct 2022 09:48:43 +0800</pubDate><description><![CDATA[给定两个大小相等的数组 nums1 和 nums2，nums1 相对于 nums2 的优势可以用满足 nums1[i] > nums2[i] 的索引 i 的数目来描述。显然，对于任意一个t=nums2[i] 而言，我们应当在候选集合中选择比其大的最小数，若不存在这样的数字，则选择候选集合中的最小值。输入：nums1 = [12,24,8,32], nums2 = [13,25,32,11]输入：nums1 = [2,7,11,15], nums2 = [1,10,4,11]输出：[2,11,7,15]]]></description><category></category></item><item><title><![CDATA[算法笔记-lc-927. 三等分（困难）]]></title><link>https://blog.youkuaiyun.com/Hell_potato777/article/details/127188523</link><guid>https://blog.youkuaiyun.com/Hell_potato777/article/details/127188523</guid><author>Hell_potato777</author><pubDate>Sun, 09 Oct 2022 23:01:41 +0800</pubDate><description><![CDATA[我们尝试找到arr 中第 1 个 1 出现的位置 first，第 partial+1 个 1出现的位置 second 以及第2×partial+1 个 1出现的位置third。但是注意到，数组的末尾是无法改变的，因此区间[third,arr.length−1] 所表示的二进制值可以固定。此外，前导零也是被允许的，所以 [0,1,1] 和 [1,1] 表示相同的值。输入：arr = [1,0,1,0,1]输入：arr = [1,1,0,1,1]输入：arr = [1,1,0,0,1]输出：[-1,-1]]]></description><category></category></item><item><title><![CDATA[算法笔记-lc-1800. 最大升序子数组和(简单)]]></title><link>https://blog.youkuaiyun.com/Hell_potato777/article/details/127200300</link><guid>https://blog.youkuaiyun.com/Hell_potato777/article/details/127200300</guid><author>Hell_potato777</author><pubDate>Sat, 08 Oct 2022 23:48:59 +0800</pubDate><description><![CDATA[[TOC](算法笔记-lc-1800. 最大升序子数组和(简单))]]></description><category></category></item><item><title><![CDATA[spring到底为什么要用三级缓存？]]></title><link>https://blog.youkuaiyun.com/Hell_potato777/article/details/127166288</link><guid>https://blog.youkuaiyun.com/Hell_potato777/article/details/127166288</guid><author>Hell_potato777</author><pubDate>Sat, 08 Oct 2022 23:48:45 +0800</pubDate><description><![CDATA[A 依赖于 B，B 依赖于 A，比如下面代码}]]></description><category></category></item><item><title><![CDATA[算法笔记-lc-811. 子域名访问计数（中等）]]></title><link>https://blog.youkuaiyun.com/Hell_potato777/article/details/127178119</link><guid>https://blog.youkuaiyun.com/Hell_potato777/article/details/127178119</guid><author>Hell_potato777</author><pubDate>Sat, 08 Oct 2022 10:30:39 +0800</pubDate><description><![CDATA[输出：[“901 mail.com”,“50 yahoo.com”,“900 google.mail.com”,“5 wiki.org”,“5 org”,“1 intel.mail.com”,“951 com”]解释：按照前文描述，会访问 “google.mail.com” 900 次，“yahoo.com” 50 次，“intel.mail.com” 1 次，“wiki.org” 5 次。对于格式"rep d1.d2"，有两个子域名"d1.d2" 和"d2"，每个子域名各被访问 rep 次。]]></description><category></category></item><item><title><![CDATA[算法笔记-lc-921. 使括号有效的最少添加（中等）]]></title><link>https://blog.youkuaiyun.com/Hell_potato777/article/details/127165513</link><guid>https://blog.youkuaiyun.com/Hell_potato777/article/details/127165513</guid><author>Hell_potato777</author><pubDate>Fri, 07 Oct 2022 22:12:14 +0800</pubDate><description><![CDATA[如果不为 0，则说明还有剩下的左括号没有匹配，对于每个剩下的左括号都需要添加一个右括号才能匹配，此时需要添加的右括号个数为剩下的左括号个数，将需要添加的右括号个数加到添加次数。对于括号匹配的题目，常用的做法是使用栈进行匹配，栈具有后进先出的特点，因此可以保证右括号和最近的左括号进行匹配。例如，如果 s = “()))” ，你可以插入一个开始括号为 “(()))” 或结束括号为 “())))”。如果左括号的个数大于 0，则前面有左括号可以匹配，因此将左括号的个数减 1，表示有一个左括号和当前右括号匹配；]]></description><category></category></item><item><title><![CDATA[算法笔记-lc-1784. 检查二进制字符串字段（简单）]]></title><link>https://blog.youkuaiyun.com/Hell_potato777/article/details/127156395</link><guid>https://blog.youkuaiyun.com/Hell_potato777/article/details/127156395</guid><author>Hell_potato777</author><pubDate>Thu, 06 Oct 2022 21:42:00 +0800</pubDate><description><![CDATA[如果 s 中 由连续若干个 ‘1’ 组成的字段 数量不超过 1，返回 true​​​。否则，返回 false。如果 s 包含 零个或一个由连续的 ‘1’ 组成的字段 ，返回 true​​​。否则，返回 false。解释：由连续若干个 ‘1’ 组成的字段数量为 2，返回 false。给你一个二进制字符串 s ，该字符串 不含前导零。s[i]​​​​ 为 ‘0’ 或 ‘1’输入：s = “1001”输入：s = “110”s[0] 为 ‘1’时间复杂度：O(n)空间复杂度：O(1)]]></description><category></category></item><item><title><![CDATA[算法笔记-lc-777. 在LR字符串中交换相邻字符（简单）]]></title><link>https://blog.youkuaiyun.com/Hell_potato777/article/details/127156314</link><guid>https://blog.youkuaiyun.com/Hell_potato777/article/details/127156314</guid><author>Hell_potato777</author><pubDate>Thu, 06 Oct 2022 21:41:22 +0800</pubDate><description><![CDATA[由于每次移动操作只是交换两个相邻字符，不会增加或删除字符，因此如果可以经过一系列移动操作将start 转换成 end，则start 和 end 满足每一种字符的数量分别相同，字符‘R’ 的相对顺序相同，且每个‘L’ 在end 中的下标小于等于对应的‘L’ 在 start 中的下标，以及每个 ‘R’ 在end 中的下标大于等于对应的 ‘R’ 在 \textit{start}start 中的下标。如果一个字符‘L’ 左侧的相邻字符是‘X’，则将字符 ‘L’ 向左移动一位，将其左侧的 ‘X’ 向右移动一位；]]></description><category></category></item><item><title><![CDATA[算法笔记-lc-1694. 重新格式化电话号码（简单）]]></title><link>https://blog.youkuaiyun.com/Hell_potato777/article/details/127146590</link><guid>https://blog.youkuaiyun.com/Hell_potato777/article/details/127146590</guid><author>Hell_potato777</author><pubDate>Wed, 05 Oct 2022 20:45:35 +0800</pubDate><description><![CDATA[我们首先对给定的字符串number 进行一次遍历，找出所有的数字，并记录在字符串 digits 中。注意，重新格式化过程中 不应该 生成仅含 1 个数字的块，并且 最多 生成两个含 2 个数字的块。步骤 2：剩下 4 个数字，所以将它们分成两个含 2 个数字的块。这 2 块分别是 “45” 和 “67”。步骤 2：剩下 3 个数字，将它们放入单个含 3 个数字的块。步骤 3：剩下 2 个数字，将它们放入单个含 2 个数字的块。当 n≤4 时，我们根据题目的要求，将剩余的 n 个字符进行分块，并结束遍历。]]></description><category></category></item><item><title><![CDATA[大小根堆和java中双优先队列的应用]]></title><link>https://blog.youkuaiyun.com/Hell_potato777/article/details/127132946</link><guid>https://blog.youkuaiyun.com/Hell_potato777/article/details/127132946</guid><author>Hell_potato777</author><pubDate>Wed, 05 Oct 2022 20:45:15 +0800</pubDate><description><![CDATA[完全二叉树是效率很高的数据结构，完全二叉树是由满二叉树而引出来的。对于深度为K的，有n个结点的二叉树，当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。第一行一个数字n，表示序列nums的长度，之后一行一个长度为n序列，每个数字用空格分割，求所有子序列的中位数之和。同理，大根堆也是一个完全二叉树，并且任何子树的最大值是它的根节点。首先小根堆是一个完全二叉树，并且任何子树的最小值是它的根节点。除了叶子节点外，每个节点的两个子节点都全的二叉树。]]></description><category></category></item><item><title><![CDATA[十字链表简介与实现（Java）]]></title><link>https://blog.youkuaiyun.com/Hell_potato777/article/details/127121239</link><guid>https://blog.youkuaiyun.com/Hell_potato777/article/details/127121239</guid><author>Hell_potato777</author><pubDate>Tue, 04 Oct 2022 19:57:17 +0800</pubDate><description><![CDATA[拿图 3 中的顶点 V1 来说，通过构建好的十字链表得知，以该顶点为弧头的顶点只有存储在数组中第 3 位置的 V4（因此该顶点的入度为 1），而以该顶点为弧尾的顶点有两个，分别为存储数组第 1 位置的 V2 和第 2 位置的 V3（因此该顶点的出度为 2）。十字链表存储有向图（网）的方式与邻接表有一些相同，都以图（网）中各顶点为首元节点建立多条链表，同时为了便于管理，还将所有链表的首元节点存储到同一数组（或链表）中。hlink 指针：用于链接下一个存储以首元节点为弧头的顶点的节点；]]></description><category></category></item><item><title><![CDATA[算法笔记-lc-面试题 01.09. 字符串轮转（中等）]]></title><link>https://blog.youkuaiyun.com/Hell_potato777/article/details/127114471</link><guid>https://blog.youkuaiyun.com/Hell_potato777/article/details/127114471</guid><author>Hell_potato777</author><pubDate>Tue, 04 Oct 2022 19:57:03 +0800</pubDate><description><![CDATA[首先，如果 s1和 s2的长度不一样，那么无论怎么轮转，s1都不能得到 s2 ，返回false。在长度一样（都为 n）的前提下，假设 s1轮转 i位，则与 s2中的某一位字符 s2[j] 对应的原 s1 中的字符应该为s1[(i+j)modn]。基于此，我们可以使用「字符串哈希」进行求解：先计算 s2 的字符串哈希值 t，然后构造出 s1 + s1 的哈希数组和次方数组，在两数组中检查是否存在长度为 n 的连续子段的哈希值 cur 与 t 相等。空间复杂度：O(n)，其中 n 是字符串 s1 的长度。]]></description><category></category></item><item><title><![CDATA[算法笔记-lc-面试题 01.08. 零矩阵（简单）]]></title><link>https://blog.youkuaiyun.com/Hell_potato777/article/details/127116197</link><guid>https://blog.youkuaiyun.com/Hell_potato777/article/details/127116197</guid><author>Hell_potato777</author><pubDate>Mon, 03 Oct 2022 21:00:18 +0800</pubDate><description><![CDATA[我们可以用矩阵的第一行和第一列代替方法一中的两个标记数组，以达到 O(1) 的额外空间。空间复杂度：O(m+n)，其中 m 是矩阵的行数，n 是矩阵的列数。空间复杂度：O(m+n)，其中 m 是矩阵的行数，n 是矩阵的列数。时间复杂度：O(mn)，其中 mm 是矩阵的行数，n 是矩阵的列数。时间复杂度：O(mn)，其中 m 是矩阵的行数，n 是矩阵的列数。时间复杂度：O(mn)，其中 m 是矩阵的行数，n 是矩阵的列数。时间复杂度：O(mn)，其中 m 是矩阵的行数，n 是矩阵的列数。]]></description><category></category></item><item><title><![CDATA[跳表的简介与实现]]></title><link>https://blog.youkuaiyun.com/Hell_potato777/article/details/127120415</link><guid>https://blog.youkuaiyun.com/Hell_potato777/article/details/127120415</guid><author>Hell_potato777</author><pubDate>Mon, 03 Oct 2022 20:59:57 +0800</pubDate><description><![CDATA[跳表全称为跳跃列表，它允许快速查询，插入和删除一个有序连续元素的数据链表。跳跃列表的平均查找和插入时间复杂度都是O(logn)。快速查询是通过维护一个多层次的链表，且每一层链表中的元素是前一层链表元素的子集（见右边的示意图）。一开始时，算法在最稀疏的层次进行搜索，直至需要查找的元素在该层两个相邻的元素中间。这时，算法将跳转到下一个层次，重复刚才的搜索，直到找到需要查找的元素为止。一张跳跃列表的示意图。每个带有箭头的框表示一个指针, 而每行是一个稀疏子序列的链表；底部的编号框（黄色）表示有序的数据序列。]]></description><category></category></item><item><title><![CDATA[算法笔记-lc-752. 打开转盘锁（中等）]]></title><link>https://blog.youkuaiyun.com/Hell_potato777/article/details/127099275</link><guid>https://blog.youkuaiyun.com/Hell_potato777/article/details/127099275</guid><author>Hell_potato777</author><pubDate>Sun, 02 Oct 2022 21:29:18 +0800</pubDate><description><![CDATA[如果对于任意的两个节点 x 和 y，并且 x 到 y 有一条长度为D(x,y) 的有向边，H(x)−H(y)≤D(x,y) 恒成立，并且 H(t)=0，那么称启发函数 H(x) 是一致的（consistent heuristic）。在搜索的过程中，设当前搜索到的数字为 status，旋转的次数为step，我们可以枚举 status 通过一次旋转得到的数字。在 A* 算法中，我们需要使用四个距离函数F(x),G(x),H(x),H∗(x)，其中 F(x),G(x),H(x) 是可以求出的，而 H^]]></description><category></category></item><item><title><![CDATA[浅析控制反转]]></title><link>https://blog.youkuaiyun.com/Hell_potato777/article/details/127112896</link><guid>https://blog.youkuaiyun.com/Hell_potato777/article/details/127112896</guid><author>Hell_potato777</author><pubDate>Sun, 02 Oct 2022 21:28:41 +0800</pubDate><description><![CDATA[控制反转 (Inversion of control) 并不是一项新的技术，是 Martin Fowler 教授提出的一种软件设计模式。那到底什么被反转了？获得依赖对象的过程被反转了。控制反转 (下文统一简称为 IoC) 把传统模式中需要自己通过 new 实例化构造函数，或者通过工厂模式实例化的任务交给容器。]]></description><category></category></item><item><title><![CDATA[算法笔记-lc-面试题 17.09. 第 k 个数（中等）]]></title><link>https://blog.youkuaiyun.com/Hell_potato777/article/details/127098998</link><guid>https://blog.youkuaiyun.com/Hell_potato777/article/details/127098998</guid><author>Hell_potato777</author><pubDate>Sat, 01 Oct 2022 11:39:57 +0800</pubDate><description><![CDATA[−1]×3,dp[p5−1]×5,dp[p7−1]×7 都小于或等于 dp[i−1]。令 dp[i]=min(dp[p3]×3,dp[p5]×5,dp[p7]×7)，则dp[i]>dp[i−1] 且 dp[i] 是大于dp[i−1] 的最小的数。对于 i>1，在计算 dp[i] 时，指针px(x∈{3,5,7}) 的含义是使得 dp[j]×x>dp[i−1] 的最小的下标 j，即当j≥px时dp[j]×x>dp[i−1]，当 j]]></description><category></category></item><item><title><![CDATA[最大公约数的四种方法]]></title><link>https://blog.youkuaiyun.com/Hell_potato777/article/details/127132815</link><guid>https://blog.youkuaiyun.com/Hell_potato777/article/details/127132815</guid><author>Hell_potato777</author><pubDate>Sat, 01 Oct 2022 11:39:01 +0800</pubDate><description><![CDATA[求两数的最大公约数，一共有四种方法：暴力穷举法、更相减损法、辗转相除法、stein 算法，小女不才，花了几天的时间终于把这几种方法全部弄明白，现在就把它们全部分享出来。首先，假设被求的两个数为 x、y，且 x > y。最大公约数 d = gcd (x , y)]]></description><category></category></item><item><title><![CDATA[算法笔记-lc-面试题 17.19. 消失的两个数字(困难)]]></title><link>https://blog.youkuaiyun.com/Hell_potato777/article/details/127080249</link><guid>https://blog.youkuaiyun.com/Hell_potato777/article/details/127080249</guid><author>Hell_potato777</author><pubDate>Fri, 30 Sep 2022 00:04:17 +0800</pubDate><description><![CDATA[[TOC](算法笔记-lc-面试题 17.19. 消失的两个数字(困难))]]></description><category></category></item></channel></rss>