<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[优快云]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qfc_128220</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qfc_128220]]></copyright><item><title><![CDATA[Python - “列表乘法”和“列表推导式”区别]]></title><link>https://blog.youkuaiyun.com/qfc_128220/article/details/146109175</link><guid>https://blog.youkuaiyun.com/qfc_128220/article/details/146109175</guid><author>qfc_128220</author><pubDate>Sat, 08 Mar 2025 03:02:53 +0800</pubDate><description><![CDATA[列表乘法和列表推导式的区别]]></description><category></category></item><item><title><![CDATA[LeetCode - 28 找出字符串中第一个匹配项的下标]]></title><link>https://blog.youkuaiyun.com/qfc_128220/article/details/146077307</link><guid>https://blog.youkuaiyun.com/qfc_128220/article/details/146077307</guid><author>qfc_128220</author><pubDate>Fri, 07 Mar 2025 13:13:27 +0800</pubDate><description><![CDATA[因为前缀部分（如abc）和后缀部分（如abc）完全相同，而前缀部分（如abc）和中间部分（如d）不相同，因此前缀部分（如abc）和中间部分对齐（如d）时，必然匹配失败。本题如果采用暴力解法的话，可以定义两个指针 i，j，其中 i 指针用于扫描 S（haystack）串，j 指针用于扫描 T（needle）串。注意，判断前缀和后缀是否相同，都是从左往右逐一比对，因此上面例子中，长度为3的前缀"aab"和后缀"baa"是不相同的。"leeto" 没有在 "leetcode" 中出现，所以返回 -1。]]></description><category></category></item><item><title><![CDATA[LeetCode - 27 移除元素]]></title><link>https://blog.youkuaiyun.com/qfc_128220/article/details/146074537</link><guid>https://blog.youkuaiyun.com/qfc_128220/article/details/146074537</guid><author>qfc_128220</author><pubDate>Thu, 06 Mar 2025 16:54:26 +0800</pubDate><description><![CDATA[我们假设 [0, i] 范围内不含值为 val 的元素，然后用 j 遍历 nums 数组的每个元素 nums[j]// 它以不等于 val 的值排序。你的函数应该返回 k = 5，并且 nums 中的前五个元素为 0,0,1,3,4。// 长度正确的预期答案。// 排序 nums 的前 k 个元素。你在返回的 k 个元素之外留下了什么并不重要（因此它们并不计入评测）。你在返回的 k 个元素之外留下了什么并不重要（因此它们并不计入评测）。你的函数函数应该返回 k = 2, 并且 nums。]]></description><category></category></item><item><title><![CDATA[LeetCode - 26 删除有序数组中的重复项]]></title><link>https://blog.youkuaiyun.com/qfc_128220/article/details/146017908</link><guid>https://blog.youkuaiyun.com/qfc_128220/article/details/146017908</guid><author>qfc_128220</author><pubDate>Tue, 04 Mar 2025 16:27:10 +0800</pubDate><description><![CDATA[的前五个元素被修改为 0, 1, 2, 3, 4。不需要考虑数组中超出新长度后面的元素。当 j 越界时，此时 [0, i] 范围就是无重复元素的原地数组，长度为 i+1。// 长度正确的期望答案。的前两个元素被修改为 1, 2。不需要考虑数组中超出新长度后面的元素。函数应该返回新的长度 2，并且原数组。函数应该返回新的长度 5，并且原数组。，返回删除后数组的新长度。删除重复出现的元素，使每个元素。]]></description><category></category></item><item><title><![CDATA[LeetCode - 25 K 个一组翻转链表]]></title><link>https://blog.youkuaiyun.com/qfc_128220/article/details/145962246</link><guid>https://blog.youkuaiyun.com/qfc_128220/article/details/145962246</guid><author>qfc_128220</author><pubDate>Sun, 02 Mar 2025 18:34:40 +0800</pubDate><description><![CDATA[首先，我们可以思考下，如何反转（单向）链表（PS. 只能基于原来的节点操作）当我们知道如何反转链表，我们可以继续思考：反转链表“指定范围的节点”是一个正整数，它的值小于或等于链表的长度。你不能只是单纯的改变节点内部的值，而是需要实际进行节点交换。的整数倍，那么请将最后剩余的节点保持原有顺序。个节点一组进行翻转，请你返回修改后的链表。本题主要考察数据结构。]]></description><category></category></item><item><title><![CDATA[LeetCode - 24 两两交换链表中的节点]]></title><link>https://blog.youkuaiyun.com/qfc_128220/article/details/145856851</link><guid>https://blog.youkuaiyun.com/qfc_128220/article/details/145856851</guid><author>qfc_128220</author><pubDate>Tue, 25 Feb 2025 17:18:39 +0800</pubDate><description><![CDATA[给你一个链表，两两交换其中相邻的节点，并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题（即，只能进行节点交换）。对于输入的链表，我们可以为其定义一个虚拟头节点 dummy_head，比如示例1，进行如下逻辑。本题主要考察数据结构。]]></description><category></category></item><item><title><![CDATA[LeetCode - 23 合并 K 个升序链表]]></title><link>https://blog.youkuaiyun.com/qfc_128220/article/details/145818365</link><guid>https://blog.youkuaiyun.com/qfc_128220/article/details/145818365</guid><author>qfc_128220</author><pubDate>Mon, 24 Feb 2025 22:16:41 +0800</pubDate><description><![CDATA[若 lists 非空，则以 lists[0] 作为基链表 base，然后从索引 1 开始遍历 lists 的每一个元素 lists[i]，依次和 base 合并，这里 lists[i] 和 base 的合并可以套用 leetcode 21逻辑。那么 [0, 4] 范围的链表合并问题，就分解为了求解 [0,2] 范围链表合并、以及 [3,4] 范围链表合并。此时，该范围只有一个链表，因此该范围的合并结果就是 lists[0] 链表。此时，该范围只有一个链表，因此该范围的合并结果就是 lists[1] 链表。]]></description><category></category></item><item><title><![CDATA[LeetCode - 22 括号生成]]></title><link>https://blog.youkuaiyun.com/qfc_128220/article/details/145803037</link><guid>https://blog.youkuaiyun.com/qfc_128220/article/details/145803037</guid><author>qfc_128220</author><pubDate>Sun, 23 Feb 2025 01:21:36 +0800</pubDate><description><![CDATA[此时需要注意的是，由于 n == 3，因此生成结果中最多只有3个左括号，3个右括号，因此下面绿色框分支中已经用完了左括号，下一层只能选择右括号。代表生成括号的对数，请你设计一个函数，用于能够生成所有可能的并且。回溯算法是基于递归进行的，而递归过程，可以模拟为一颗树的生成过程。每一层节点都有两种选择：左括号 "(" 或着 右括号 ")"树的第六层生成，由于合法括号组合必然是以。分支被剪枝 ，因为其必然不合法。结尾，因此最后一层必然是右括号。，则生成结果必然不合法。但是合法的括号组合，]]></description><category></category></item><item><title><![CDATA[LeetCode - 21 合并两个有序链表]]></title><link>https://blog.youkuaiyun.com/qfc_128220/article/details/145748772</link><guid>https://blog.youkuaiyun.com/qfc_128220/article/details/145748772</guid><author>qfc_128220</author><pubDate>Thu, 20 Feb 2025 12:07:26 +0800</pubDate><description><![CDATA[本题的要求是：需要使用 list1 和 list2 的节点来构成合并后的链表。新链表是通过拼接给定的两个链表的所有节点组成的。将两个升序链表合并为一个新的。]]></description><category></category></item><item><title><![CDATA[LeetCode - 20 有效的括号]]></title><link>https://blog.youkuaiyun.com/qfc_128220/article/details/145716326</link><guid>https://blog.youkuaiyun.com/qfc_128220/article/details/145716326</guid><author>qfc_128220</author><pubDate>Wed, 19 Feb 2025 18:02:33 +0800</pubDate><description><![CDATA[最终，当 s 串遍历完所有字符后，stack 为空，则说明所有括号都完成了配对。本题可以利用 “栈” 解题。，判断字符串是否有效。]]></description><category></category></item><item><title><![CDATA[LeetCode - 19 删除链表的倒数第 N 个结点]]></title><link>https://blog.youkuaiyun.com/qfc_128220/article/details/145709944</link><guid>https://blog.youkuaiyun.com/qfc_128220/article/details/145709944</guid><author>qfc_128220</author><pubDate>Tue, 18 Feb 2025 22:03:33 +0800</pubDate><description><![CDATA[fast 先走 n 步，然后 slow、fast 才同时走，则 slow 和 fast 将会一直保持 n 步的差距，那么当 fast 越界时（即 fast == null 时），slow 就处于倒数第 n 个节点。因此，我们想要删除倒数第 n 个节点，则需要找到倒数第 n+1 个节点，按照前面slow、fast指针逻辑，则当fast走到倒数第1个节点时，slow位于倒数第n+1个节点位置。但是本题的链表是单向链表，即当前节点只能通过next找到下一个节点，而无法找到上一个。给你一个链表，删除链表的倒数第。]]></description><category></category></item><item><title><![CDATA[LeetCode - 18 四数之和]]></title><link>https://blog.youkuaiyun.com/qfc_128220/article/details/145690784</link><guid>https://blog.youkuaiyun.com/qfc_128220/article/details/145690784</guid><author>qfc_128220</author><pubDate>Tue, 18 Feb 2025 14:23:04 +0800</pubDate><description><![CDATA[四数之和：固定四元组中最小两个值的索引 i，j，然后定义双指针 L = j + 1，R = len(nums) - 1，如果此时四元组之和 sum = nums[i] + nums[j] + nums[L] + nums[R]因此当 nums[i] == nums[i-1] 时，我们可以跳过，比如上图 i = 1，j=2 的过程可以跳过，因为产生的必然时重复的四元组。如上图所示，红色框部分，其中 j 的位置相同，L，R的运动过程也相同，只是 i 的位置发生了变化，但是 i 指向的元素值时没有改变的。]]></description><category></category></item><item><title><![CDATA[LeetCode - 850 矩形面积 II]]></title><link>https://blog.youkuaiyun.com/qfc_128220/article/details/142579251</link><guid>https://blog.youkuaiyun.com/qfc_128220/article/details/142579251</guid><author>qfc_128220</author><pubDate>Fri, 27 Sep 2024 00:07:40 +0800</pubDate><description><![CDATA[虽然矩形交集很容易求解，但是想要求出所有交集，则需要让每个矩形和剩余其他矩形尝试比较，得出交集。对于 rectangle[i] = [x1, y1, x2, y2]，其中（x1，y1）是矩形 i 左下角的坐标， (xi1, yi1) 是该矩形 左下角 的坐标， (xi2, yi2) 是该矩形 右上角 的坐标。上面这种思路就是 ”扫描线算法“，扫描线法可以将 "面" 的问题，分解为 "线" 的问题，将 "矩形（面）交集问题" 降解为 "区间（线）交集问题"。从(1,1)到(2,2)，绿色矩形和红色矩形重叠。]]></description><category></category></item><item><title><![CDATA[LeetCode - 503 下一个更大元素 II]]></title><link>https://blog.youkuaiyun.com/qfc_128220/article/details/142523903</link><guid>https://blog.youkuaiyun.com/qfc_128220/article/details/142523903</guid><author>qfc_128220</author><pubDate>Wed, 25 Sep 2024 15:25:47 +0800</pubDate><description><![CDATA[本题相较于 496题 的变化在于，nums 数组是首尾相连的，即 nums[nums.length - 1] 下一个更大元素，可以继续从 nums[0] 开始找。给定一个循环数组 nums （ nums[nums.length - 1] 的下一个元素是 nums[0] ），返回 nums 中每个元素的 下一个更大元素。数字 x 的 下一个更大的元素 是按数组遍历顺序，这个数字之后的第一个比它更大的数，这意味着你应该循环地搜索它的下一个更大的数。输入: nums = [1,2,3,4,3]]]></description><category></category></item><item><title><![CDATA[LeetCode - 496 下一个更大元素 I]]></title><link>https://blog.youkuaiyun.com/qfc_128220/article/details/142521783</link><guid>https://blog.youkuaiyun.com/qfc_128220/article/details/142521783</guid><author>qfc_128220</author><pubDate>Wed, 25 Sep 2024 14:31:36 +0800</pubDate><description><![CDATA[对于每个 0 <= i < nums1.length ，找出满足 nums1[i] == nums2[j] 的下标 j ，并且在 nums2 确定 nums2[j] 的 下一个更大元素。- 4 ，用加粗斜体标识，nums2 = [1,3,4,2]。不存在下一个更大元素，所以答案是 -1。- 1 ，用加粗斜体标识，nums2 = [1,3,4,2]。输入：nums1 = [4,1,2], nums2 = [1,3,4,2].输入：nums1 = [2,4], nums2 = [1,2,3,4].]]></description><category></category></item><item><title><![CDATA[LeetCode - 17 电话号码的字母组合]]></title><link>https://blog.youkuaiyun.com/qfc_128220/article/details/142137149</link><guid>https://blog.youkuaiyun.com/qfc_128220/article/details/142137149</guid><author>qfc_128220</author><pubDate>Wed, 11 Sep 2024 16:32:55 +0800</pubDate><description><![CDATA[因此 "23" 对应的组合有："ad"、"ae"、"af"、"bd"、"be"、"bf"、"cd"、"ce"、"cf"输出：["ad","ae","af","bd","be","bf","cd","ce","cf"]因此，如果我们可以遍历出该树形结构的每一条分支，那么就能求出所有组合。如果画图表示的话，可以发现组合问题的求解过程，可以形成一个树形结构。该树形结构的每一条根到叶子节点的路径都对应一个组合。本题是一个组合问题，可以使用回溯算法解题。输出：["a","b","c"]输入：digits = "2"]]></description><category></category></item><item><title><![CDATA[LeetCode - 16 最接近的三数之和]]></title><link>https://blog.youkuaiyun.com/qfc_128220/article/details/142097345</link><guid>https://blog.youkuaiyun.com/qfc_128220/article/details/142097345</guid><author>qfc_128220</author><pubDate>Tue, 10 Sep 2024 14:39:48 +0800</pubDate><description><![CDATA[本题要求的是最接近taget的三数之和，因此我们在找三元组的过程中，只要保留和target差距最小的三元组之和即可。解释：与 target 最接近的和是 2 (-1 + 2 + 1 = 2)。解释：与 target 最接近的和是 0（0 + 0 + 0 = 0）。输入：nums = [-1,2,1,-4], target = 1。输入：nums = [0,0,0], target = 1。一致，具体逻辑，可以看下这篇博客。中选出三个整数，使它们的和与。假定每组输入只存在恰好一个解。]]></description><category></category></item><item><title><![CDATA[LeetCode - 15 三数之和]]></title><link>https://blog.youkuaiyun.com/qfc_128220/article/details/142058392</link><guid>https://blog.youkuaiyun.com/qfc_128220/article/details/142058392</guid><author>qfc_128220</author><pubDate>Mon, 09 Sep 2024 20:30:56 +0800</pubDate><description><![CDATA[因此当 nums[i] == nums[i-1] 时，我们就可以跳过 nums[i] 产生三元组的过程，因为必然和 nums[i-1] 产生的三元组发生重复。我们返回的结果是一个 int** 类型的，主要记录不重复的三元组，比如 [[-1,-1,2], [-1,0,1]]，可以发现返回值本质是一个二维数组。比如对于返回值 [[-1,-1,2], [-1,0,1]] 来说，returnSize = 2，returnColumnSizes = [3, 3]输出：[[-1,-1,2],[-1,0,1]]]]></description><category></category></item><item><title><![CDATA[LeetCode - 14 最长公共前缀]]></title><link>https://blog.youkuaiyun.com/qfc_128220/article/details/141787773</link><guid>https://blog.youkuaiyun.com/qfc_128220/article/details/141787773</guid><author>qfc_128220</author><pubDate>Sun, 01 Sep 2024 18:38:26 +0800</pubDate><description><![CDATA[我们可以假设最长公共前缀 prefix = strs[0]，然后遍历其余 strs[i] 和 prefix 取最长公共前缀后，更新 prefix。输入：strs = ["flower","flow","flight"]输入：strs = ["dog","racecar","car"]编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀，返回空字符串 ""。解释：输入不存在公共前缀。]]></description><category></category></item><item><title><![CDATA[LeetCode - 13 罗马数字转整数]]></title><link>https://blog.youkuaiyun.com/qfc_128220/article/details/141787212</link><guid>https://blog.youkuaiyun.com/qfc_128220/article/details/141787212</guid><author>qfc_128220</author><pubDate>Sun, 01 Sep 2024 17:56:00 +0800</pubDate><description><![CDATA[通常情况下，罗马数字中小的数字在大的数字的右边。数字 1 在数字 5 的左边，所表示的数等于大数 5 减小数 1 得到的数值 4。例如， 罗马数字 2 写做 II ，即为两个并列的 1。解释: M = 1000, CM = 900, XC = 90, IV = 4.罗马数字包含以下七种字符: I， V， X， L，C，D 和 M。输入: s = "MCMXCIV"情况1，每个罗马数字都是独立的。输入: s = "LVIII"输入: s = "III"输入: s = "IV"输入: s = "IX"]]></description><category></category></item></channel></rss>