LeetCode
文章平均质量分 57
LeetCode系列文章
2021狮子歌歌
煎和熬都是可以变美味的方式,加油也是~
展开
-
牛客- 字符串通配符
那么可以匹配一个数字字符或者字母字符,但是如果str此时不是字母或数字,不能匹配,返回false。如果不是字母,但是也是相同的,比如都是# . 之类的 index1和index2都向后走。如果都是字母,并且是同一个字母(不区分大小写),index1和index2都向后走。能抵消多个字符串的字符,让index1不动,index2向后走。返回不区分大小写的匹配结果,匹配成功输出true,匹配失败输出false。看成不存在,跳过: index1向后走,index2不动。:匹配0个或以上的字符(注:能被。原创 2023-04-08 22:58:34 · 506 阅读 · 2 评论 -
LeetCode654.最大二叉树
然后划分左右子区间 [left,max_index-1] 和 [max_index+1,right]找到[left,right]的最大值 以及最大值坐标max_index,构造root。递归构造左右子区间: root -> left 和 root ->right。递归地在最大值 左边 的 子数组前缀上 构建左子树。递归地在最大值 右边 的 子数组后缀上 构建右子树。具体需要考虑左右区间的划分,以及递归的结束条件。创建一个根节点,其值为 nums 中的最大值。返回 nums 构建的 最大二叉树。原创 2023-04-07 18:28:20 · 602 阅读 · 1 评论 -
LeetCode23.合并k个有序链表
对于这样一个例子,我们遍历lists,每次要找到所有升序链表中,要比较每一个升序头节点val,找到最小的那个尾插到结果链表(ans)因为priority_queue的第三个参数需要传递一个仿函数,对于。每一个lists[i]都为空,即所有的升序链表都找了一遍了,就结束。— > 采用优先级队列(priority_queue)请你将所有链表合并到一个升序链表中,返回合并后的链表。给你一个链表数组,每个链表都已经按升序排列。也就是我们创建一个小堆,以val的大小来排序。原创 2023-04-07 10:53:37 · 865 阅读 · 0 评论 -
LeetCode103.二叉树的锯齿形层序遍历
如果i是偶数层,说明从左向右遍历。i是奇数层,从右向左遍历。定义一个i标识是第几层。原创 2023-04-03 16:21:25 · 128 阅读 · 0 评论 -
剑指Offer26.树的子结构
针是否等于B的根节点的值对A做先序遍历的过程中 如果根节点相同我们去判断此时B是不是以该根节点的子树的子结构!该函数是用于判断,B是不是以A为根节点的树的子结构。如果A,B值不等,直接返回false。因此需要借助辅助函数, hasSub(A,B)实际上进行先序遍历的同时要进行递归判断子结构。实际上2和3就是在进行先序遍历!题目让判断B是不是A的子结构。但是我们进行判断是基于。, 去判断是否为子结构。原创 2023-04-03 15:31:17 · 187 阅读 · 0 评论 -
LeetCode394.字符串解码
编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。把 k[encoded_string] 当作一次递归,即遇到数字,就要递归。给定一个经过编码的字符串,返回它解码后的字符串。k[]括号内部可能有多个子[],利用递归。s 保证是一个 有效 的输入。原创 2023-03-25 17:07:10 · 379 阅读 · 0 评论 -
LeetCode43.字符串相乘【大整数相乘】
该算法是通过两数相乘时,乘数某位与被乘数某位相乘,与产生结果的位置的规律来完成。那么他们的结果的位数不会超过M+N(一位数*两位数结果最大也就3位数。最后的整型数组用一个string依次拼接就是目标结果。内层:遍历num1:M,字符串相加(最大为M+N)M为num1的长度,N为num2的长度。的结果一定是两位数并且小于等于81,时间复杂度:O(MN+N^2) 内层整体取M+N。所以整体是M*N+N^2。原创 2022-09-17 20:33:47 · 224 阅读 · 0 评论 -
字符串的最小编辑距离
编辑距离的算法是首先由俄国科学家 Levenshtein 提出的,故又叫 Levenshtein Distance。Levenshtein 距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。dp数组的开辟:str1.size() +1 行, str2.size() +1 列。把这个操作所需要的次数定义为两个字符串的距离。数据范围:给定的字符串长度满足 1原创 2022-11-16 09:42:54 · 677 阅读 · 0 评论 -
LeetCode64. 最小路径和
请找出一条从左上角到右下角的路径,每一步只能向下走或者向右走。遍历二维数组,找到最小值。给定一个包含非负整数的。原创 2022-12-29 11:01:51 · 138 阅读 · 0 评论 -
nowcoder-Triangle
给出一个三角形,计算从三角形顶部到底部的最小路径和,每一步都可以移动到下面一行相邻的数字,例如,给出的三角形如下:`[[20],[30,40],[60,50,70],[40,10,80,30]]`最小的从顶部到底部的路径和是20 + 30 + 50 + 10 = 110。注意:如果你能只用O(N)的额外的空间来完成这项工作的话,就可以得到附加分,其中N是三角形中的行总数。原创 2022-11-09 18:36:44 · 123 阅读 · 0 评论 -
LeetCode322.零钱兑换(一)
给你一个整数数组 `coins` ,表示不同面额的硬币;以及一个整数 `amount `,表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。你可以认为每种硬币的数量是无限的。原创 2022-11-16 13:23:07 · 583 阅读 · 0 评论 -
LeetCode46.全排列
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列。你可以 按任意顺序 返回答案。主函数中需要遍历每一个元素为起始。原创 2023-01-08 20:45:19 · 112 阅读 · 0 评论 -
LeetCode17.电话号码的字母组合
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。原创 2023-01-12 10:53:18 · 119 阅读 · 0 评论 -
LeetCode396. 旋转函数
最直接的思路就是,直接一个个旋转尝试,直到找到最大值,但是看这一题的难度也就知道了,暴力的方法肯定通过不了,复杂度太高了!其中F(0)可以首先求出,作为max的初始值。原创 2023-01-01 21:57:35 · 133 阅读 · 0 评论 -
LeetCode661.图片平滑器
如果一个单元格周围存在单元格缺失的情况,则计算平均灰度时不考虑缺失的单元格(即,需要计算红色平滑器中 4 个单元格的平均值)。定义为:该单元格自身及其周围的 8 个单元格的平均值,结果需向下取整。(即,需要计算蓝色平滑器中 9 个单元格的平均值)。的过滤器,用于对图像的每个单元格平滑处理,平滑处理后单元格的值为该单元格的平均灰度。这题不太难,用C语言来做比较有挑战性,而C语言主要是参数的传递很恶心!整数矩阵 img ,返回对图像的每个单元格平滑处理后的图像。给你一个表示图像灰度的。原创 2022-12-30 21:02:24 · 138 阅读 · 0 评论 -
LeetCode118.杨辉三角 | LeetCode119.杨辉三角Ⅱ
给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。每一次从当前行j位置开始,从后向前走(否则前面的会被覆盖)在「杨辉三角」中,每个数是它左上方和右上方的数的和。,返回「杨辉三角」的第。就从下标从1的行开始迭代。j位置+=j-1位置的值。求下标为index的行。原创 2022-12-29 10:01:38 · 448 阅读 · 0 评论 -
LeetCode665.非递减数列
请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个非递减数列。我们是这样定义一个非递减数列的: 对于数组中任意的。原创 2022-12-27 13:09:00 · 135 阅读 · 0 评论 -
LeetCode54.螺旋矩阵&& LeetCode59.螺旋矩阵Ⅱ | 螺旋矩阵问题
LeetCode螺旋矩阵问题原创 2023-01-05 15:26:01 · 395 阅读 · 0 评论 -
LeetCode498. 对角线遍历
如果坐标和为奇数,就向下走。然后根据上面所列的具体的情况再进行判断向右or向左or向上or向下。,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。所以,从[0][0]开始填入数组,并判断下一次往哪走。如果坐标和为偶数,就向上走。我们规定,在路径中有。原创 2023-01-05 14:09:19 · 820 阅读 · 2 评论 -
LeetCode453.最小操作次数使数组元素相等
给你一个长度为 n 的整数数组,每次操作将会使 n - 1 个元素增加 1。返回让数组所有元素相等的最小操作次数。除了最大值的坐标,其余坐标元素都++每一次都找出最大值的坐标。每一次记录count。原创 2022-12-27 13:06:07 · 291 阅读 · 0 评论 -
LeetCode35.搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。原创 2022-12-28 17:25:16 · 131 阅读 · 0 评论 -
LeetCode 598 范围求和Ⅱ
的矩阵 M ,初始化时所有的 0 和一个操作数组 op ,其中。在 执行完所有操作后 ,计算并返回 矩阵中最大整数的个数。验证:如果ops数组为空,那么直接返回区域就是m*n 成立!所以,直接把最小值设置为m和n 从而去找最小的a和b。得到的就是最后的区域长度和区域宽度。:最后的区域长度 最大也不过m。区域宽度 最大也不过n。原创 2022-12-28 17:27:31 · 604 阅读 · 0 评论 -
LeetCode283.移动0
所以需要用count记录0的个数,当所有0都移动完了就break,否则会死循环。在i位置遇到0,把后面的元素向前移动覆盖,然后把最后一个位置赋值为0即可。最后end走到numsSize,src位置就是最后一个非0的下一个位置。有可能 i 位置的0 是因为 已经所有的0都到后面了。可以发现 src和end交换的过程就是一直把0向后换。可能 i 一个位置 移动一次之后还是0,需要循环。那么src和end一直自己交换,也是正确的!end去找非0,放到src位置。当end位置为非0的时候。原创 2022-12-27 13:04:26 · 607 阅读 · 0 评论 -
LeetCode419.甲板上的战舰
给你一个大小为 `m x n` 的矩阵 `board` 表示甲板,其中,每个单元格可以是一艘战舰 `'X'` 或者是一个空位` '.'` ,返回在甲板` board `上放置的 战舰 的数量。>战舰 只能水平或者垂直放置在` board `上。换句话说,战舰只能按 `1 x k`(1 行,k 列)或 `k x 1`(k 行,1 列)的形状建造,其中` k` 可以是任意大小。两艘战舰之间至少有一个水平或垂直的空位分隔 (即没有相邻的战舰)。示例2💡解题思路原创 2022-12-29 10:18:00 · 267 阅读 · 0 评论 -
LeetCode303.区域和检索 - 数组不可变
计算[1,3]的元素和 就是计算[0,3]元素和 减去 [0,0]元素和。计算[2,5]元素和 就是计算[0,5]元素和 减去 [0,1]元素和。之所以创建一个 比元素组nums大1的空间,是因为 left >= 1。其实就是让你计算一个数组从left到right之间的元素和。创建一个数组,每个位置 i 存放了 [0,i-1]的元素和。所以简单的利用每一次循环来加和,时间复杂度很高。(包含 left 和 right)之间的。需要计算[0,left-1]的元素和。但是 题目要求设计一个类。原创 2022-12-30 21:34:07 · 212 阅读 · 0 评论 -
LeetCode150.逆波兰表达式
给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。逆波兰表达式是一种后缀表达式,所谓后缀就是指算符写在后面。这个题如果我们不了解后缀表达式是怎么运算的,是没办法做的。这就需要通过所给示例来推导 后缀表达式的运算方法。返回一个表示表达式值的整数。首先需要明确两个表达式的转换。并把它和栈的性质结合起来。原创 2023-01-12 11:16:52 · 343 阅读 · 0 评论