Leetcode算法刷题
文章平均质量分 52
以实战为主要目的,研究算法,数据结构和一些基础知识。
Kinght_123
大家好,我是Kinght_123,欢迎大家关注!
展开
-
LeetCode:2032. 至少在两个数组中出现的值————简单(Python、C、C++)
给你三个整数数组 nums1、nums2 和 nums3 ,请你构造并返回一个 元素各不相同的 数组,且由 至少 在 两个 数组中出现的所有值组成。数组中的元素可以按 任意 顺序排列。原创 2022-12-29 14:02:55 · 150 阅读 · 0 评论 -
LeetCode:1750. 删除字符串两端相同字符后的最短长度————中等(Python、C、C++)
请你返回对字符串 s 执行上面操作任意次以后(可能 0 次),能得到的 最短长度。选择字符串 s 一个 非空 的前缀,这个前缀的所有字符都相同。选择字符串 s 一个 非空 的后缀,这个后缀的所有字符都相同。前缀和后缀在字符串中任意位置都不能有交集。前缀和后缀包含的所有字符都要相同。同时删除前缀和后缀。原创 2022-12-28 13:21:01 · 135 阅读 · 0 评论 -
LeetCode:2027. 转换字符串的最少操作次数————简单(Python、C、C++)
一次 操作 定义为从 s 中选出 三个连续字符 并将选中的每个字符都转换为 ‘O’。注意,如果字符已经是 ‘O’ ,只需要保持 不变。给你一个字符串 s ,由 n 个字符组成,每个字符不是 ‘X’ 就是 ‘O’。返回将 s 中所有字符均转换为 ‘O’ 需要执行的 最少 操作次数。原创 2022-12-27 11:10:43 · 358 阅读 · 2 评论 -
LeetCode:52. N皇后 II————困难(Python)
n 皇后问题 研究的是如何将 n 个皇后放置在 n × n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回 n 皇后问题 不同的解决方案的数量。解释:如上图所示,4 皇后问题存在两个不同的解法。原创 2022-11-15 16:32:31 · 316 阅读 · 0 评论 -
LeetCode:51. N 皇后————困难(Python)
每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。解释:如上图所示,4 皇后问题存在两个不同的解法。输出:[[“Q”]]原创 2022-11-15 16:15:44 · 184 阅读 · 0 评论 -
LeetCode:58. 最后一个单词的长度————简单(C语言)
给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。原创 2022-11-12 18:27:51 · 519 阅读 · 0 评论 -
LeetCode:35. 搜索插入位置————简单(C语言-+)
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。原创 2022-11-09 22:47:12 · 771 阅读 · 0 评论 -
LeetCode:1684. 统计一致字符串的数目————简单(C语言)
给你一个由不同字符组成的字符串 allowed 和一个字符串数组 words。如果一个字符串的每一个字符都在 allowed 中,就称这个字符串是 一致字符串。请你返回 words 数组中 一致字符串 的数目。原创 2022-11-08 18:59:24 · 108 阅读 · 0 评论 -
LeetCode:27. 移除元素————简单(C语言)
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。为什么返回数值是整数,但输出的答案是数组呢?原创 2022-10-28 18:27:49 · 128 阅读 · 0 评论 -
LeetCode:26. 删除有序数组中的重复项————简单(C语言)
由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致。不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。将最终结果插入 nums 的前 k 个位置后返回 k。nums 已按 升序 排列。原创 2022-10-26 18:24:04 · 215 阅读 · 0 评论 -
LeetCode:13. 罗马数字转整数————简单(C语言)
通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。同样地,数字 9 表示为 IX。例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II。27 写做 XXVII, 即为 XX + V + II。罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。给定一个罗马数字,将其转换成整数。原创 2022-10-23 15:52:26 · 258 阅读 · 0 评论 -
LeetCode:剑指 Offer II 024. 反转链表————简单
给定单链表的头节点 head ,请反转链表,并返回反转后的链表的头节点。输入:head = [1,2,3,4,5]输入:head = [1,2]输出:[5,4,3,2,1]输入:head = []原创 2022-10-22 18:46:49 · 182 阅读 · 0 评论 -
LeetCode:9. 回文数————简单(C语言)
给你一个整数 x ,如果 x 是一个回文整数,返回 true;否则,返回 false。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。原创 2022-10-22 18:08:07 · 326 阅读 · 0 评论 -
LeetCode:876. 链表的中间结点————简单
876. 链表的中间结点给定一个头结点为 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。提示:运行结果原创 2022-08-07 16:08:05 · 139 阅读 · 0 评论 -
LeetCode:206. 反转链表————简单
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。输入:head = [1,2,3,4,5]输入:head = [1,2]输出:[5,4,3,2,1]原创 2022-08-05 10:11:42 · 139 阅读 · 0 评论 -
LeetCode:21. 合并两个有序链表————简单
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]原创 2022-08-05 09:59:19 · 146 阅读 · 0 评论 -
LeetCode:392. 判断子序列————简单
字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。如果有大量输入的 S,称作 S1, S2, …, Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码?给定字符串 s 和 t ,判断 s 是否为 t 的子序列。...原创 2022-08-04 20:08:32 · 1365 阅读 · 0 评论 -
LeetCode:205. 同构字符串————简单
每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。给定两个字符串 s 和 t ,判断它们是否是同构的。...原创 2022-08-04 19:56:18 · 1450 阅读 · 0 评论 -
LeetCode:724. 寻找数组的中心下标————简单
如果中心下标位于数组最左端,那么左侧数之和视为 0 ,因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。如果数组有多个中心下标,应该返回 最靠近左边 的那一个。如果数组不存在中心下标,返回 -1。数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。给你一个整数数组 nums ,请计算数组的 中心下标。...原创 2022-08-03 18:43:37 · 207 阅读 · 0 评论 -
LeetCode:1480. 一维数组的动态和————简单
给你一个数组 nums。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i])。请返回 nums 的动态和。原创 2022-08-03 18:31:53 · 1401 阅读 · 0 评论 -
LeetCode:1184. 公交站间的距离————简单
我们已知每一对相邻公交站之间的距离,distance[i]表示编号为i的车站和编号为(i+1)%n的车站之间的距离。输入distance=[1,2,3,4],start=0,destination=1。输入distance=[1,2,3,4],start=0,destination=2。输入distance=[1,2,3,4],start=0,destination=3。环线上的公交车都可以按顺时针和逆时针的方向行驶。...原创 2022-07-24 12:46:47 · 364 阅读 · 0 评论 -
LeetCode:735. 行星碰撞————中等
735. 行星碰撞给定一个整数数组 asteroids,表示在同一行的行星。对于数组中的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方向(正表示向右移动,负表示向左移动)。每一颗行星以相同的速度移动。找出碰撞后剩下的所有行星。碰撞规则:两个行星相互碰撞,较小的行星会爆炸。如果两颗行星大小相同,则两颗行星都会爆炸。两颗移动方向相同的行星,永远不会发生碰撞。解题思路简单的栈的应用。Code运行结果...原创 2022-07-13 21:33:39 · 137 阅读 · 0 评论 -
LeetCode:1252. 奇数值单元格的数目————简单
1252. 奇数值单元格的数目给你一个 m x n 的矩阵,最开始的时候,每个单元格中的值都是 0。另有一个二维索引数组 indices,indices[i] = [ri, ci] 指向矩阵中的某个位置,其中 ri 和 ci 分别表示指定的行和列(从 0 开始编号)。对 indices[i] 所指向的每个位置,应同时执行下述增量操作:ri 行上的所有单元格,加 1 。ci 列上的所有单元格,加 1 。给你 m、n 和 indices 。请你在执行完所有 indices 指定的增量操作后,返回矩阵中 奇原创 2022-07-12 09:40:31 · 154 阅读 · 0 评论 -
LeetCode:497. 非重叠矩形中的随机点————中等
497. 非重叠矩形中的随机点给定一个由非重叠的轴对齐矩形的数组 rects ,其中 rects[i] = [ai, bi, xi, yi] 表示 (ai, bi) 是第 i 个矩形的左下角点,(xi, yi) 是第 i 个矩形的右上角点。设计一个算法来随机挑选一个被某一矩形覆盖的整数点。矩形周长上的点也算做是被矩形覆盖。所有满足要求的点必须等概率被返回。在给定的矩形覆盖的空间内的任何整数点都有可能被返回。请注意 ,整数点是具有整数坐标的点。实现 Solution 类:示例 1:输入:[“Soluti原创 2022-06-09 09:58:39 · 405 阅读 · 1 评论 -
LeetCode:1037. 有效的回旋镖————简单
1037. 有效的回旋镖给定一个数组 points ,其中 points[i] = [xi, yi] 表示 X-Y 平面上的一个点,如果这些点构成一个 回旋镖 则返回 true 。回旋镖 定义为一组三个点,这些点 各不相同 且 不在一条直线上 。提示:运行结果......原创 2022-06-08 09:43:08 · 172 阅读 · 0 评论 -
LeetCode:875. 爱吃香蕉的珂珂————中等
875. 爱吃香蕉的珂珂珂珂喜欢吃香蕉。这里有 n 堆香蕉,第 i 堆中有 piles[i] 根香蕉。警卫已经离开了,将在 h 小时后回来。珂珂可以决定她吃香蕉的速度 k (单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉 k 根。如果这堆香蕉少于 k 根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。返回她可以在 h 小时内吃掉所有香蕉的最小速度 k(k 为整数)。提示:运行结果...原创 2022-06-07 10:50:03 · 141 阅读 · 0 评论 -
LeetCode:732. 我的日程安排表 III————困难
732. 我的日程安排表 III当 k 个日程安排有一些时间上的交叉时(例如 k 个日程安排都在同一时间内),就会产生 k 次预订。给你一些日程安排 [start, end) ,请你在每个日程安排添加后,返回一个整数 k ,表示所有先前日程安排会产生的最大 k 次预订。实现一个 MyCalendarThree 类来存放你的日程安排,你可以一直添加新的日程安排。MyCalendarThree() 初始化对象。int book(int start, int end) 返回一个整数 k ,表示日历中存在的 k原创 2022-06-06 10:39:12 · 703 阅读 · 0 评论 -
LeetCode:478. 在圆内随机生成点————中等
478. 在圆内随机生成点给定圆的半径和圆心的位置,实现函数 randPoint ,在圆中产生均匀随机点。实现 Solution 类:Solution(double radius, double x_center, double y_center) 用圆的半径 radius 和圆心的位置 (x_center, y_center) 初始化对象randPoint() 返回圆内的一个随机点。圆周上的一点被认为在圆内。答案作为数组返回 [x, y] 。提示:运行结果...原创 2022-06-05 13:19:43 · 210 阅读 · 0 评论 -
LeetCode:929. 独特的电子邮件地址————简单
929. 独特的电子邮件地址每个 有效电子邮件地址 都由一个 本地名 和一个 域名 组成,以 ‘@’ 符号分隔。除小写字母之外,电子邮件地址还可以含有一个或多个 ‘.’ 或 ‘+’ 。例如,在 alice@leetcode.com中, alice 是 本地名 ,而 leetcode.com 是 域名 。如果在电子邮件地址的 本地名 部分中的某些字符之间添加句点(‘.’),则发往那里的邮件将会转发到本地名中没有点的同一地址。请注意,此规则 不适用于域名 。例如,"alice.z@leetcode.com”原创 2022-06-04 15:30:27 · 575 阅读 · 0 评论 -
LeetCode:12. 整数转罗马数字————中等
12. 整数转罗马数字罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:给你原创 2022-06-03 15:03:16 · 174 阅读 · 0 评论 -
LeetCode:450. 删除二叉搜索树中的节点————中等
450. 删除二叉搜索树中的节点给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一般来说,删除节点可分为两个步骤:首先找到需要删除的节点;如果找到了,删除它。示例 1:输入:root = [5,3,6,2,4,null,7], key = 3输出:[5,4,6,2,null,null,7]解释:给定需要删除的节点值是 3,所以我们首先找到 3 这个节点,然后删除它。一个正确的答原创 2022-06-02 10:49:25 · 114 阅读 · 0 评论 -
LeetCode:473. 火柴拼正方形————中等
473. 火柴拼正方形你将得到一个整数数组 matchsticks ,其中 matchsticks[i] 是第 i 个火柴棒的长度。你要用 所有的火柴棍 拼成一个正方形。你 不能折断 任何一根火柴棒,但你可以把它们连在一起,而且每根火柴棒必须 使用一次 。如果你能使这个正方形,则返回 true ,否则返回 false 。提示:运行结果原创 2022-06-01 10:05:08 · 198 阅读 · 0 评论 -
LeetCode:8. 字符串转换整数 (atoi)————中等
目录题目解题思路Code运行结果题目8. 字符串转换整数 (atoi)请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。函数 myAtoi(string s) 的算法如下:读入字符串并丢弃无用的前导空格检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。如果两者都不存在,则假定结果为正。读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字.原创 2022-05-31 14:09:23 · 91 阅读 · 0 评论 -
LeetCode:357. 统计各位数字都不同的数字个数————中等
题目357. 统计各位数字都不同的数字个数给你一个整数 n ,统计并返回各位数字都不同的数字 x 的个数,其中 0 <= x < 10n 。示例 1:输入:n = 2输出:91解释:答案应为除去 11、22、33、44、55、66、77、88、99 外,在 0 ≤ x < 100 范围内的所有数字。 示例 2:输入:n = 0输出:1 提示:0 <= n <= 8解题思路题目提示 0 <= n <= 8, 本题本质就是用不同 0-原创 2022-04-11 19:17:48 · 166 阅读 · 0 评论 -
LeetCode:606. 根据二叉树创建字符串————简单
题目606. 根据二叉树创建字符串你需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串。空节点则用一对空括号 “()” 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。示例 1:输入: 二叉树: [1,2,3,4] 1 / \ 2 3 / 4 输出: "1(2(4))(3)"解释: 原本将是“1(2(4)())(3())”,在你省略所有不必要的空括号对之后,它将是“原创 2022-03-19 17:04:12 · 158 阅读 · 0 评论 -
LeetCode:2104. 子数组范围和————中等
题目2104. 子数组范围和给你一个整数数组 nums 。nums 中,子数组的 范围 是子数组中最大元素和最小元素的差值。返回 nums 中 所有 子数组范围的 和 。子数组是数组中一个连续 非空 的元素序列。示例 1:输入:nums = [1,2,3]输出:4解释:nums 的 6 个子数组如下所示:[1],范围 = 最大 - 最小 = 1 - 1 = 0 [2],范围 = 2 - 2 = 0[3],范围 = 3 - 3 = 0[1,2],范围 = 2 - 1 = 1[2,3]原创 2022-03-04 09:16:56 · 7464 阅读 · 0 评论 -
LeetCode:553. 最优除法————中等
题目553. 最优除法给定一组正整数,相邻的整数之间将会进行浮点除法操作。例如, [2,3,4] -> 2 / 3 / 4 。但是,你可以在任意位置添加任意数目的括号,来改变算数的优先级。你需要找出怎么添加括号,才能得到最大的结果,并且返回相应的字符串格式的表达式。你的表达式不应该含有冗余的括号。示例:输入: [1000,100,10,2]输出: "1000/(100/10/2)"解释:1000/(100/10/2) = 1000/((100/10)/2) = 200但是,以下加粗的原创 2022-02-27 08:34:11 · 125 阅读 · 0 评论 -
LeetCode:2016. 增量元素之间的最大差值————简单
题目2016. 增量元素之间的最大差值给你一个下标从 0 开始的整数数组 nums ,该数组的大小为 n ,请你计算 nums[j] - nums[i] 能求得的 最大差值 ,其中 0 <= i < j < n 且 nums[i] < nums[j] 。返回 最大差值 。如果不存在满足要求的 i 和 j ,返回 -1 。示例 1:输入:nums = [7,1,5,4]输出:4解释:最大差值出现在 i = 1 且 j = 2 时,nums[j] - nums[i] =原创 2022-02-26 08:50:01 · 408 阅读 · 0 评论 -
LeetCode:537. 复数乘法————中等
题目537. 复数乘法复数 可以用字符串表示,遵循 “实部+虚部i” 的形式,并满足下述条件:实部 是一个整数,取值范围是 [-100, 100]虚部 也是一个整数,取值范围是 [-100, 100]i的平方 == -1给你两个字符串表示的复数 num1 和 num2 ,请你遵循复数表示形式,返回表示它们乘积的字符串。示例 1:输入:num1 = "1+1i", num2 = "1+1i"输出:"0+2i"解释:(1 + i) * (1 + i) = 1 + i2 + 2 * i =原创 2022-02-25 09:25:12 · 7553 阅读 · 0 评论 -
LeetCode:1706. 球会落何处————中等
题目1706. 球会落何处用一个大小为 m x n 的二维网格 grid 表示一个箱子。你有 n 颗球。箱子的顶部和底部都是开着的。箱子中的每个单元格都有一个对角线挡板,跨过单元格的两个角,可以将球导向左侧或者右侧。将球导向右侧的挡板跨过左上角和右下角,在网格中用 1 表示。将球导向左侧的挡板跨过右上角和左下角,在网格中用 -1 表示。在箱子每一列的顶端各放一颗球。每颗球都可能卡在箱子里或从底部掉出来。如果球恰好卡在两块挡板之间的 “V” 形图案,或者被一块挡导向到箱子的任意一侧边上,就会卡住。原创 2022-02-24 12:35:36 · 133 阅读 · 0 评论