
LeetCode
阿飞算法
这个作者很懒,什么都没留下…
展开
-
算法之搜索与图论
1.FloodFill原创 2021-02-01 20:08:59 · 776 阅读 · 0 评论 -
[LeetCode]1460. 通过翻转子数组使两个数组相等
【代码】[LeetCode]1460. 通过翻转子数组使两个数组相等。原创 2022-08-24 08:35:09 · 390 阅读 · 2 评论 -
[LeetCode]1302. 层数最深叶子节点的和
[LeetCode]1302. 层数最深叶子节点的和。原创 2022-08-17 09:12:05 · 327 阅读 · 0 评论 -
[LeetCode]151. 翻转字符串里的单词
代码】[LeetCode]151. 翻转字符串里的单词。原创 2022-08-09 19:31:27 · 150 阅读 · 0 评论 -
[LeetCode]1413. 逐步求和得到正数的最小值
1413. 逐步求和得到正数的最小值给你一个整数数组 nums 。你可以选定任意的 正数 startValue 作为初始值。你需要从左到右遍历 nums 数组,并将 startValue 依次累加上 nums 数组中的值。请你在确保累加和始终大于等于 1 的前提下,选出一个最小的 正数 作为 startValue 。 示例 1:输入:nums = [-3,2,-3,4,2]输出:5解释:如果你选择 startValue = 4,在第三次累加时,和小于 1 。原创 2022-08-09 09:56:05 · 192 阅读 · 0 评论 -
[LeetCode]1403. 非递增顺序的最小子序列
## [1403. 非递增顺序的最小子序列](https://leetcode.cn/problems/minimum-subsequence-in-non-increasing-order/)### 题目```java给你一个数组 nums,请你从中抽取一个子序列,满足该子序列的元素之和 严格 大于未包含在该子序列中的各元素之和。如果存在多个解决方案,只需返回 长度最小 的子序列。如果仍然有多个解决方案,则返回 元素之和最大 的子序列。与子数组不同的地方在于,「数组的子序列」不强调元..原创 2022-08-04 19:27:42 · 143 阅读 · 0 评论 -
[LeetCode]186. 翻转字符串里的单词 II
```java题目描述给定一个字符串,逐个翻转字符串中的每个单词。示例: 输入: ["t","h","e"," ","s","k","y"," ","i","s"," ","b","l","u","e"] 输出: ["b","l","u","e"," ","i","s"," ","s","k","y"," ","t","h","e"]注意: 单词的定义是不包含空格的一系列字符 输入字符串中不会包含前置或尾随的空格 单词与单词之间永远是以单个空格隔开的进阶: 使用 O(原创 2022-06-24 16:32:10 · 173 阅读 · 0 评论 -
[LeetCode]161. 相隔为 1 的编辑距离
给定两个字符串 s 和 t,判断他们的编辑距离是否为 1。注意:满足编辑距离等于 1 有三种可能的情形:往 s 中插入一个字符得到 t从 s 中删除一个字符得到 t在 s 中替换一个字符得到 t样例示例 1:输入: s = "ab", t = "acb"输出: true解释: 可以将 'c' 插入字符串 s 来得到 t。示例 2:输入: s = "cab", t = "ad"输出: false解释: 无法通过 1 步操作使 s 变为 t。示例 3:输入: s.原创 2022-06-24 16:16:44 · 221 阅读 · 0 评论 -
[LeetCode]515. 在每个树行中找最大值
515. 在每个树行中找最大值给定一棵二叉树的根节点 root ,请找出该二叉树中每一层的最大值。 示例1:输入: root = [1,3,2,5,3,null,9]输出: [1,3,9]示例2:输入: root = [1,2,3]输出: [1,3] 提示:二叉树的节点个数的范围是 [0,104]-231 ...原创 2022-06-24 08:35:44 · 142 阅读 · 0 评论 -
[LeetCode]30. 串联所有单词的子串
30. 串联所有单词的子串给定一个字符串 s 和一些 长度相同 的单词 words 。找出 s 中恰好可以由 words 中所有单词串联形成的子串的起始位置。注意子串要与 words 中的单词完全匹配,中间不能有其他字符 ,但不需要考虑 words 中单词串联的顺序。 示例 1:输入:s = "barfoothefoobarman", words = ["foo","bar"]输出:[0,9]解释:从索引 0 和 9 开始的子串分别是 "barfoo" 和 "foobar" 。输出原创 2022-06-23 09:34:41 · 97 阅读 · 0 评论 -
[LeetCode]513. 找树左下角的值
513. 找树左下角的值给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。假设二叉树中至少有一个节点。 示例 1:输入: root = [2,1,3]输出: 1示例 2:输入: [1,2,3,4,null,5,6,null,null,7]输出: 7 提示:二叉树的节点个数的范围是 [1,104]-231 ...原创 2022-06-22 08:12:48 · 161 阅读 · 0 评论 -
石子合并问题分析
石子合并问题分析原创 2022-06-21 09:56:24 · 249 阅读 · 0 评论 -
畅游动态规划之区间DP
1068.环形石子合并320.能量项链原创 2022-06-20 22:56:58 · 108 阅读 · 0 评论 -
[LeetCode]动态规划解拆分整数I[Silver Fox]
动态规划解拆分整数I[Silver Fox]原创 2022-06-20 09:44:43 · 151 阅读 · 0 评论 -
[LeetCode]动态规划解分割数组I[Red Fox]
动态规划解分割数组I[Red Fox]原创 2022-06-20 09:43:12 · 163 阅读 · 0 评论 -
[LeetCode]动态规划解分割数组II[Arctic Fox]
动态规划解分割数组II[Arctic Fox]原创 2022-06-20 09:41:31 · 241 阅读 · 0 评论 -
[LeetCode]100. 相同的树
100. 相同的树给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1:输入:p = [1,2,3], q = [1,2,3]输出:true示例 2:输入:p = [1,2], q = [1,null,2]输出:false示例 3:输入:p = [1,2,1], q = [1,1,2]输出:false 提示:两棵树上的节点数目都在范围 [0, 100] 内-原创 2022-06-19 09:06:16 · 106 阅读 · 0 评论 -
[LeetCode]572. 另一棵树的子树
572. 另一棵树的子树给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 false 。二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。tree 也可以看做它自身的一棵子树。 示例 1:输入:root = [3,4,5,1,2], subRoot = [4,1,2]输出:true示例 2:输入:root = [3,4,5,1,2,nul原创 2022-06-19 08:54:02 · 196 阅读 · 0 评论 -
[LeetCode]508. 出现次数最多的子树元素和
508. 出现次数最多的子树元素和给你一个二叉树的根结点 root ,请返回出现次数最多的子树元素和。如果有多个元素出现的次数相同,返回所有出现次数最多的子树元素和(不限顺序)。一个结点的 「子树元素和」 定义为以该结点为根的二叉树上所有结点的元素之和(包括结点本身)。 示例 1:输入: root = [5,2,-3]输出: [2,-3,4]示例 2:输入: root = [5,2,-5]输出: [2] 提示:节点数在 [1, 104] 范围内-105 ...原创 2022-06-19 08:31:00 · 111 阅读 · 0 评论 -
[Sword Offer II]剑指 Offer II 029. 排序的循环链表
剑指 Offer II 029. 排序的循环链表给定循环单调非递减列表中的一个点,写一个函数向这个列表中插入一个新元素 insertVal ,使这个列表仍然是循环升序的。给定的可以是这个列表中任意一个顶点的指针,并不一定是这个列表中最小元素的指针。如果有多个满足条件的插入位置,可以选择任意一个位置插入新的值,插入后整个列表仍然保持有序。如果列表为空(给定的节点是 null),需要创建一个循环有序列表并返回这个节点。否则。请返回原先给定的节点。 示例 1: 输入:head =原创 2022-06-18 13:44:45 · 78 阅读 · 0 评论 -
[LeetCode]1023. 驼峰式匹配
1023. 驼峰式匹配如果我们可以将小写字母插入模式串 pattern 得到待查询项 query,那么待查询项与给定模式串匹配。(我们可以在任何位置插入每个字符,也可以插入 0 个字符。)给定待查询列表 queries,和模式串 pattern,返回由布尔值组成的答案列表 answer。只有在待查项 queries[i] 与模式串 pattern 匹配时, answer[i] 才为 true,否则为 false。 示例 1:输入:queries = ["FooBar","FooBarTes原创 2022-06-17 09:01:46 · 285 阅读 · 0 评论 -
[LeetCode]1089. 复写零
1089. 复写零给你一个长度固定的整数数组 arr,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。注意:请不要在超过该数组长度的位置写入元素。要求:请对输入的数组 就地 进行上述修改,不要从函数返回任何东西。 示例 1:输入:[1,0,2,3,0,4,5,0]输出:null解释:调用函数后,输入的数组将被修改为:[1,0,0,2,3,0,0,4]示例 2:输入:[1,2,3]输出:null解释:调用函数后,输入的数组将被修改为:[1,2,3] 提示原创 2022-06-17 06:06:03 · 188 阅读 · 0 评论 -
[LeetCode]532. 数组中的 k-diff 数对
532. 数组中的 k-diff 数对给定一个整数数组和一个整数 k,你需要在数组里找到 不同的 k-diff 数对,并返回不同的 k-diff 数对 的数目。这里将 k-diff 数对定义为一个整数对 (nums[i], nums[j]),并满足下述全部条件:0 ...原创 2022-06-16 08:47:47 · 179 阅读 · 0 评论 -
[LeetCode]498. 对角线遍历
498. 对角线遍历给你一个大小为 m x n 的矩阵 mat ,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。 示例 1:输入:mat = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,4,7,5,3,6,8,9]示例 2:输入:mat = [[1,2],[3,4]]输出:[1,2,3,4] 提示:m == mat.lengthn == mat[i].length1 ...原创 2022-06-14 19:19:32 · 1440 阅读 · 0 评论 -
[LeetCode]1051. 高度检查器
1051. 高度检查器学校打算为全体学生拍一张年度纪念照。根据要求,学生需要按照 非递减 的高度顺序排成一行。排序后的高度情况用整数数组 expected 表示,其中 expected[i] 是预计排在这一行中第 i 位的学生的高度(下标从 0 开始)。给你一个整数数组 heights ,表示 当前学生站位 的高度情况。heights[i] 是这一行中第 i 位学生的高度(下标从 0 开始)。返回满足 heights[i] != expected[i] 的 下标数量 。 示例:输入原创 2022-06-13 06:33:08 · 151 阅读 · 0 评论 -
[LeetCode-SQL]手写SQL
175. 组合两个表原创 2022-06-12 19:35:48 · 450 阅读 · 2 评论 -
[LeetCode]698. 划分为k个相等的子集
698. 划分为k个相等的子集给定一个整数数组 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 提示:1 ...原创 2022-06-12 19:12:11 · 1410 阅读 · 0 评论 -
[LeetCode]5289. 公平分发饼干
5289. 公平分发饼干给你一个整数数组 cookies ,其中 cookies[i] 表示在第 i 个零食包中的饼干数量。另给你一个整数 k 表示等待分发零食包的孩子数量,所有 零食包都需要分发。在同一个零食包中的所有饼干都必须分发给同一个孩子,不能分开。分发的 不公平程度 定义为单个孩子在分发过程中能够获得饼干的最大总数。返回所有分发的最小不公平程度。 示例 1:输入:cookies = [8,15,10,20,8], k = 2输出:31解释:一种最优方案是 [8,15,8]原创 2022-06-12 19:08:23 · 404 阅读 · 0 评论 -
[LeetCode]890. 查找和替换模式
890. 查找和替换模式你有一个单词列表 words 和一个模式 pattern,你想知道 words 中的哪些单词与模式匹配。如果存在字母的排列 p ,使得将模式中的每个字母 x 替换为 p(x) 之后,我们就得到了所需的单词,那么单词与模式是匹配的。(回想一下,字母的排列是从字母到字母的双射:每个字母映射到另一个字母,没有两个字母映射到同一个字母。)返回 words 中与给定模式匹配的单词列表。你可以按任何顺序返回答案。 示例:输入:words = ["abc","deq原创 2022-06-12 09:24:03 · 137 阅读 · 0 评论 -
[LeetCode]2222. 选择建筑的方案数
2222. 选择建筑的方案数给你一个下标从 0 开始的二进制字符串 s ,它表示一条街沿途的建筑类型,其中:s[i] = '0' 表示第 i 栋建筑是一栋办公楼,s[i] = '1' 表示第 i 栋建筑是一间餐厅。作为市政厅的官员,你需要随机 选择 3 栋建筑。然而,为了确保多样性,选出来的 3 栋建筑 相邻 的两栋不能是同一类型。比方说,给你 s = "001101" ,我们不能选择第 1 ,3 和 5 栋建筑,因为得到的子序列是 "011" ,有相邻两栋建筑是同一类型,所以 不合 题意。原创 2022-06-11 20:33:17 · 138 阅读 · 0 评论 -
[LeetCode]300. 最长递增子序列
300. 最长递增子序列原创 2022-06-11 12:32:05 · 767 阅读 · 0 评论 -
[LeetCode]926. 将字符串翻转到单调递增
926. 将字符串翻转到单调递增如果一个二进制字符串,是以一些 0(可能没有 0)后面跟着一些 1(也可能没有 1)的形式组成的,那么该字符串是 单调递增 的。给你一个二进制字符串 s,你可以将任何 0 翻转为 1 或者将 1 翻转为 0 。返回使 s 单调递增的最小翻转次数。 示例 1:输入:s = "00110"输出:1解释:翻转最后一位得到 00111.示例 2:输入:s = "010110"输出:2解释:翻转得到 011111,或者是 000111。示例 3:原创 2022-06-11 12:21:09 · 1289 阅读 · 0 评论 -
[LeetCode]730. 统计不同回文子序列
730. 统计不同回文子序列原创 2022-06-10 09:34:37 · 187 阅读 · 0 评论 -
[LeetCode]6. Z 字形变换
6. Z 字形变换原创 2022-06-09 21:28:48 · 76 阅读 · 0 评论 -
[LeetCode]497. 非重叠矩形中的随机点
497. 非重叠矩形中的随机点原创 2022-06-09 09:05:00 · 321 阅读 · 0 评论 -
[LeetCode]347. 前 K 个高频元素
347. 前 K 个高频元素原创 2022-06-08 21:01:09 · 352 阅读 · 0 评论 -
[LeetCode]340.最多有K个不同字符的最长子串
340.最多有K个不同字符的最长子串原创 2022-06-08 09:46:03 · 385 阅读 · 0 评论 -
[LeetCode]159.最多有两个不同字符的最长子串
159.最多有两个不同字符的最长子串原创 2022-06-08 09:43:30 · 310 阅读 · 0 评论 -
[LeetCode]1037. 有效的回旋镖
1037. 有效的回旋镖原创 2022-06-08 06:56:11 · 252 阅读 · 2 评论 -
[LeetCode]875. 爱吃香蕉的珂珂
875. 爱吃香蕉的珂珂原创 2022-06-07 08:33:47 · 167 阅读 · 0 评论