
LeetCode
文章平均质量分 63
不想悲伤到天明
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
1094. 拼车(差分&堆排序)
对于一个给定的数组 arr[0…n-1],其差分数组 diff[0…n-1]定义diff0arr0diff0arr0diffiarri−arri−1diffiarri−arri−1对于所有0in0 < i < n0in这意味着 $ diff[i]存储了存储了存储了arr[i]$和 $arr[i-1] $之间的差值。原创 2023-12-02 16:25:28 · 1191 阅读 · 3 评论 -
44. 通配符匹配(动态规划)
给你一个输入字符串 (s) 和一个字符模式p ,请你实现一个支持 ‘?’ 和 ‘’ 匹配规则的通配符匹配:‘?’ 可以匹配任何单个字符。'’ 可以匹配任意字符序列(包括空字符序列)。判定匹配成功的充要条件是:字符模式必须能够 完全匹配 输入字符串(而不是部分匹配)。示例 1:假设 dp[i][j] 表示字符串s的前i字符和匹配串p的前j个字符的匹配结果。分下面情况 :原创 2023-11-30 19:40:00 · 1329 阅读 · 1 评论 -
1657. 确定两个字符串是否接近(排序)
如果可以使用以下操作从一个字符串得到另一个字符串,则认为两个字符串 接近 :操作 1:交换任意两个 现有 字符。例如,abcde -> aecdb操作 2:将一个 现有 字符的每次出现转换为另一个 现有 字符,并对另一个字符执行相同的操作。例如,aacabb -> bbcbaa(所有 a 转化为 b ,而所有的 b 转换为 a )你可以根据需要对任意一个字符串多次使用这两种操作。给你两个字符串,word1 和 word2 。如果 word1 和 word2 接近 ,就返回 true ;否则,返回 f原创 2023-11-30 09:57:33 · 577 阅读 · 1 评论 -
2948. 交换得到字典序最小的数组 (分组排序)
给你一个下标从 0 开始的 正整数 数组 nums 和一个 正整数 limit 。在一次操作中,你可以选择任意两个下标 i 和 j,如果 满足 |nums[i] - nums[j]| <= limit ,则交换 nums[i] 和 nums[j] 。返回执行任意次操作后能得到的 字典序最小的数组 。如果在数组 a 和数组 b 第一个不同的位置上,数组 a 中的对应字符比数组 b 中的对应字符的字典序更小,则认为数组 a 就比数组 b 字典序更小。例如,数组 [2,10,3] 比数组 [10,2,3] 字典序原创 2023-11-29 20:52:02 · 697 阅读 · 1 评论 -
2947. 统计美丽子字符串 I (前缀和)
给你一个字符串 s 和一个正整数 k 。用 vowels 和 consonants 分别表示字符串中元音字母和辅音字母的数量。如果某个字符串满足以下条件,则称其为 美丽字符串 :vowels == consonants,即元音字母和辅音字母的数量相等。(vowels * consonants) % k == 0,即元音字母和辅音字母的数量的乘积能被 k 整除。返回字符串 s 中 非空美丽子字符串 的数量。子字符串是字符串中的一个连续字符序列。英语中的 元音字母 为 ‘a’、‘e’、‘i’、‘o’ 和 ‘原创 2023-11-28 15:57:45 · 1123 阅读 · 1 评论 -
220. 存在重复元素 III(滑动窗口+有序集合)
给你一个整数数组 nums 和两个整数 indexDiff 和 valueDiff 。找出满足下述条件的下标对 (i, j):暴力搜索的话,就是两层循环,枚举(i,j),找到符合条件的即可,但是会超时 O(n2)O(n^{2})O(n2)。用滑动窗口来优化,我们维护一个长度始终小于等于t的有序集合。窗口收缩时机 : 当,收缩左端点。题目中要求窗口内的 , 我们使用一个 Set来维护窗口内的值,存在 就返回true,原创 2023-11-26 10:36:13 · 524 阅读 · 1 评论 -
76. 最小覆盖子串 (滑动窗口)
Note :如果在每次开始收缩时记录当前的字符串,在266数据会卡内存,所以要改成记录子串的起始start,通过substr(start,len),获取最小子串。原创 2023-11-25 21:19:33 · 607 阅读 · 1 评论 -
1387. 将整数按权重排序(递归 +记忆化+排序)
Problem:我们将整数 x 的 权重 定义为按照下述规则将 x 变成 1 所需要的步数:如果 x 是偶数,那么 x = x / 2如果 x 是奇数,那么 x = 3 * x + 1比方说,x=3 的权重为 7。因为 3 需要 7 步变成 1 (3 --> 10 --> 5 --> 16 --> 8 --> 4 --> 2 --> 1)。给你三个整数 lo, hi 和 k。原创 2023-11-24 16:30:47 · 537 阅读 · 1 评论 -
1553. 吃掉 N 个橘子的最少天数(记忆化+贪心优化)
使得 n 变成0的操作有三种方式 :优化一下我们肯定是希望这样的操作尽可能少(贪心)。优先选择操作2和3.原创 2023-11-23 10:40:53 · 221 阅读 · 2 评论 -
241. 为运算表达式设计优先级(分治 +记忆化)
Problem:给你一个由数字和运算符组成的字符串 expression ,按不同优先级组合数字和运算符,计算并返回所有可能组合的结果。你可以 按任意顺序 返回答案。生成的测试用例满足其对应输出值符合 32 位整数范围,不同结果的数量不超过104。示例 1:输入:expression = “2-1-1” 输出:[0,2] 解释:示例 2:输入:expression = “23-45”输出:[-34,-14,-10,-10,10] 解释:(2*(3-(45))) = -34。原创 2023-11-20 08:42:45 · 139 阅读 · 1 评论 -
698. 划分为k个相等的子集(记忆化搜索+状态压缩)
Problem:给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等。示例 1:输入: nums = [4, 3, 2, 3, 5, 2, 1], k = 4输出: True说明: 有可能将其分成 4 个子集(5),(1,4),(2,3),(2,3)等于总和。示例 2:输入: nums = [1,2,3,4], k = 3输出: false。原创 2023-11-15 16:58:29 · 134 阅读 · 1 评论 -
813. 最大平均值和的分组(前缀和 + 递归+记忆化搜索)
使用一个二维数组 f 来存储已经解决的子问题的结果。这里。原创 2023-11-13 15:10:39 · 173 阅读 · 1 评论 -
525. 连续数组 (前缀和 + 哈希)
Problem:给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组,并返回该子数组的长度。示例 1:输入: nums = [0,1]输出: 2说明: [0, 1] 是具有相同数量 0 和 1 的最长连续子数组。示例 2:输入: nums = [0,1,0]输出: 2说明: [0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子数组。原创 2023-11-09 20:00:17 · 245 阅读 · 0 评论 -
523. 连续的子数组和 (前缀和 + 同余性质+哈希)
暴力超时解题方法假设我们的目标是求得 S[j]−S[i−1] S[j]-S[i-1] S[j]−S[i−1](区间 [i,j]的和)是满足整除k,则S[j]−S[i−1]%k==0S[j]-S[i-1] \% k ==0 S[j]−S[i−1]%k==0 ,即存在一个整数n ,满足 S[j]−S[i−1]=n∗kS[j] -S[i-1] = n*k S[j]−S[i−1]=n∗k两边同时除以 k , S[j]k−S[i−1]k=n \frac{S[j]}{k} -\frac{S[i-1]}{k}原创 2023-11-07 10:47:23 · 169 阅读 · 0 评论 -
235. 二叉搜索树的最近公共祖先
Problem: 235. 二叉搜索树的最近公共祖先文章目录思路方法Code思路二叉树中两个结点的最近公共祖先,可以这样寻找,从根节点出发,分别到达p,q两个结点时,一定会分叉,那么分叉时的结点就是公共祖先。方法分别将从根节点出发到达 p ,q的路径上的结点存储下来,然后判断什么时候分叉的。Codeclass Solution {public: // 从根节点出发到 target结点 路上所经过的所有结点加入 path vector<TreeNode*原创 2023-07-30 16:21:45 · 209 阅读 · 0 评论 -
56. 合并区间 排序
Problem: 56. 合并区间文章目录思路Code思路对数组排序,按照左端点从小到大排序。初始化Merged,将第一个区间放入。遍历intervals ,如果当前区间的左端点比merged最后一个区间的右端点大,不重合,直接将该区间加入最后,否则,重合,更新最后一个区间的右端点。Codeclass Solution {public: vector<vector<int>> merge(vector<vector<int>>&原创 2023-07-28 16:44:06 · 363 阅读 · 0 评论 -
130. 被围绕的区域
Problem: 130. 被围绕的区域文章目录思路解题方法Code思路这道题目可以使用 dfs来做,对于board中的“O”来说,任何不在边界上,或不**与边界上的 ‘O’ 相连的 ‘O’ **最终都会被填充为 ‘X’。也就是说,除了边界上的还有与边界上"0"相连的其他 “O"都要被填充成“X” .因此我们从每一个边界上的 “O"出发,标记所有边界上以及与之相连的"O”。填充为“A”,之后遍历board 现在所有的"O"就是应该被填充为"X"的。解题方法dfsCodeclass原创 2023-07-28 15:37:25 · 145 阅读 · 0 评论 -
116. 填充每个节点的下一个右侧节点指针 层次遍历
Problem: 116. 填充每个节点的下一个右侧节点指针文章目录思路解题方法Code思路首先层次遍历一下满二叉树并记录结点个数(由结点编号可以计算出当前所在的层数,由于每层的最后一个结点的next是指向NULL),将其压入栈,然后对栈进行操作。解题方法int h = static_cast<int>(log2(cnt ))+1 ; // 根据当前结点编号,计算当前结点所在的层数,int lastNode = pow(2, h) - 1; 每层的最后一个结点的编号原创 2023-07-25 15:57:01 · 137 阅读 · 0 评论 -
2559. 统计范围内的元音字符串数
输入:words = ["aba","bcb","ece","aa","e"], queries = [[0,2],[1,4],[1,1]]输入:words = ["a","e","i"], queries = [[0,2],[0,1],[2,2]]解释:以元音开头和结尾的字符串是 "aba"、"ece"、"aa" 和 "e"。查询 [1,4] 结果为 3(字符串 "ece"、"aa"、"e")。查询 [0,2] 结果为 2(字符串 "aba" 和 "ece")。输出:[2,3,0]输出:[3,2,1]原创 2023-06-02 15:20:04 · 678 阅读 · 0 评论 -
LeetCode 路径总和
二叉树路径和原创 2023-03-06 20:04:41 · 424 阅读 · 0 评论 -
放苹果HJ61
动态规划入门题目原创 2023-02-27 21:02:14 · 473 阅读 · 0 评论 -
盛最多的水
leetcode题解原创 2022-10-17 20:48:36 · 288 阅读 · 1 评论 -
二进制求和
给你两个二进制字符串,返回它们的和(用二进制表示)。输入为 非空 字符串且只包含数字 1 和 0。示例 1:输入: a = “11”, b = “1”输出: “100”示例 2:输入: a = “1010”, b = “1011”输出: “10101”提示:每个字符串仅由字符 ‘0’ 或 ‘1’ 组成。1 <= a.length, b.length <= 10^4字符串如果不是 “0” ,就都不含前导零。来源:力扣(LeetCode)链接:https://leetcod原创 2021-04-08 18:41:35 · 310 阅读 · 0 评论 -
删除有序数组中的重复项
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:输入:nums = [1,1,2]输出:2, nums = [1,2]解释:函数应该返回新的长度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2 。不需要考虑数组中超出新长度后面的元素。示例 2:输入:nums = [0,0,1,1,1,2,2,3,3,4]原创 2021-04-05 20:54:55 · 237 阅读 · 0 评论 -
有效的括号
给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = "()"输出:true示例2:输入:s = "()[]{}"输出:true示例3:输入:s = "(]"输出:false示例4:输入:s = "([)]"输出:false示例5:输入:s = "{[]}"输出:true提示:1 &l...原创 2021-04-04 20:25:11 · 1057 阅读 · 0 评论 -
LeetCode - 整数反转
整数反转给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例1:输入: 123 输出: 321 示例 2:输入: -123 输出: -321 示例 3:输入: 120 输出: 21 注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为[−231, 231− 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。 思路比较...原创 2019-12-03 20:13:31 · 128 阅读 · 0 评论 -
LeetCode (1) 两数之和
1. 两数之和给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [...原创 2019-05-15 23:02:15 · 120 阅读 · 0 评论