LeetCode
文章平均质量分 54
Guapifang
这个作者很懒,什么都没留下…
展开
-
LeetCode LCR 026. 重排链表
LCR 026. 重排链表中等128相关企业给定一个单链表 L 的头节点 head ,单链表 L 表示为:请将其重新排列后变为:不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1:输入: head = [1,2,3,4]输出: [1,4,2,3]示例 2:输入: head = [1,2,3,4,5]输出: [1,5,2,4,3]提示:链表的长度范围为 [1, 5 * 104]原创 2023-09-11 23:59:38 · 517 阅读 · 0 评论 -
LeetCode735. 行星碰撞 -- 栈模拟
对于数组中的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方向(正表示向右移动,负表示向左移动)。每一颗行星以相同的速度移动。找出碰撞后剩下的所有行星。碰撞规则:两个行星相互碰撞,较小的行星会爆炸。如果两颗行星大小相同,则两颗行星都会爆炸。两颗移动方向相同的行星,永远不会发生碰撞。示例 1:输入:asteroids = [5,10,-5]输出:[5,10]解释:10 和 -5 碰撞后只剩下 10。5 和 10 永远不会发生碰撞。原创 2023-07-28 21:30:07 · 556 阅读 · 0 评论 -
LeetCode1657. 确定两个字符串是否接近
操作 1:交换任意两个 现有 字符。例如,abcde -> aecdb操作 2:将一个 现有 字符的每次出现转换为另一个 现有 字符,并对另一个字符执行相同的操作。例如,aacabb -> bbcbaa(所有 a 转化为 b ,而所有的 b 转换为 a )你可以根据需要对任意一个字符串多次使用这两种操作。给你两个字符串,word1 和 word2。如果 word1 和 word2 接近 ,就返回 true;否则,返回 false。原创 2023-07-18 21:43:36 · 534 阅读 · 0 评论 -
LeetCode 1493. 删掉一个元素以后全为 1 的最长子数组 - 二分 + 滑动窗口
请你在删掉元素的结果数组中,返回最长的且只包含 1 的非空子数组的长度。如果不存在这样的子数组,请返回 0。提示 1:输入:nums = [1,1,0,1]输出:3解释:删掉位置 2 的数后,[1,1,1] 包含 3 个 1。示例 2:输入:nums = [0,1,1,1,0,1,1,0,1]输出:5解释:删掉位置 4 的数字后,[0,1,1,1,1,1,0,1] 的最长全 1 子数组为 [1,1,1,1,1]。示例 3:输入:nums = [1,1,1]输出:2。原创 2023-07-18 21:23:57 · 1086 阅读 · 1 评论 -
LeetCode 790. 多米诺和托米诺平铺 - 二维空间的动态规划
给定整数 n ,返回可以平铺 2 x n 的面板的方法的数量。返回对 109 + 7 取模 的值。平铺指的是每个正方形都必须有瓷砖覆盖。两个平铺不同,当且仅当面板上有四个方向上的相邻单元中的两个,使得恰好有一个平铺有一个瓷砖占据两个正方形。示例 1:输入: n = 3输出: 5解释: 五种不同的方法如上所示。原创 2023-07-17 22:04:31 · 454 阅读 · 0 评论 -
LeetCode 137. 只出现一次的数字 II -- 位运算 is all you need
你必须设计并实现线性时间复杂度的算法且不使用额外空间来解决此问题。示例 1:输入:nums = [2,2,3,2]输出:3示例 2:输入:nums = [0,1,0,1,0,1,99]输出:99提示:1原创 2023-03-16 12:52:30 · 157 阅读 · 0 评论 -
2. 小红的排列构造
小红的排列构造小红希望你构造一个排列,满足对于排列中的每一项��ai都满足:���ai+i均不是质数(下标�i从1开始)。你能帮帮她吗?长度为�n的排列是指:一个长度为�n的数组,其中1到�n每个正整数恰好出现1次。例如[2,1,3]是排列,而[1,3,4,3]不是排列。原创 2023-03-14 11:22:59 · 1807 阅读 · 0 评论 -
4. 对称飞行器 -- BFS搜索
一种可行的路径是用对称飞行器到达 \text (4,3) 再向上走一步,再向右走一步,然后使用一次对称飞行器到达终点。再开一维,表示风行器使用的次数,就可以了,剩下的就是简单的BFS搜索。第一行两个空格分隔的正整数 ,分别代表迷宫的行数和列数。接下来 行 每行一个长度为 的字符串来描述这个迷宫。仅一行一个整数表示从起点最小花费多少时间单位到达终点。空间限制:C/C++ 256M,其他语言512M。时间限制:C/C++ 2秒,其他语言4秒。保证只有一个 和 一个。如果无法到达终点,输出。原创 2023-03-13 18:04:56 · 621 阅读 · 0 评论 -
2. 小强爱数学
感觉蛮有趣的一个题目,需要推导下通项式。有了这个推导关系,就很好处理了。原创 2023-03-13 13:11:54 · 178 阅读 · 0 评论 -
拼多多2021笔试真题集 -- 4. 多多的骰子组合
多多的骰子组合多多君拼团购买了N个骰子,为了方便后面进行活动,多多君需要将这些骰子进行分类。两个骰子为同类的定义是:1将其中一个骰子通过若干次上下、左右或前后翻转后,其与另一个骰子对应的6面数字均相等。现在多多君想知道不同种类的骰子的数量分别有多少。时间限制:C/C++ 2秒,其他语言4秒空间限制:C/C++ 256M,其他语言512M输入描述:第一行1个整数N,表示骰子的数量。接下来N行,每行6个数字(1~6,且各不相同)原创 2023-03-10 14:42:45 · 483 阅读 · 0 评论 -
拼多多2021笔试真题集 -- 3. 多多的求和计算
多多的求和计算多多路上从左到右有N棵树(编号1~N),其中第i个颗树有和谐值Ai。多多鸡认为,如果一段连续的树,它们的和谐值之和可以被M整除,那么这个区间整体看起来就是和谐的。现在多多鸡想请你帮忙计算一下,满足和谐条件的区间的数量。时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 256M,其他语言512M输入描述:第一行,有2个整数N和M,表示树的数量以及计算和谐值的参数。第二行,有N个整数Ai, 分别表示第i个颗树的和谐值。原创 2023-03-10 14:39:36 · 890 阅读 · 2 评论 -
拼多多2021笔试真题集 -- 2. 多多的字符变换
多多的字符变换多多君最近在研究字符串之间的变换,可以对字符串进行若干次变换操作:交换任意两个相邻的字符,代价为0。将任意一个字符a修改成字符b,代价为 |a - b|(绝对值)。现在有两个长度相同的字符串X和Y,多多君想知道,如果要将X和Y变成两个一样的字符串,需要的最少的代价之和是多少。时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 256M,其他语言512M输入描述:共三行,第一行,一个整数N,表示字符串的长度。原创 2023-03-10 14:38:09 · 628 阅读 · 0 评论 -
拼多多2021笔试真题集 -- 1. 多多的数字组合
多多的数字组合多多君最近在研究某种数字组合:定义为:每个数字的十进制表示中(0~9),每个数位各不相同且各个数位之和等于N。满足条件的数字可能很多,找到其中的最小值即可。多多君还有很多研究课题,于是多多君找到了你–未来的计算机科学家寻求帮助。数据范围:1≤�≤10001≤n≤1000进阶:空间复杂度�1O(1) ,时间复杂度��O(n)时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 256M,其他语言512M。原创 2023-03-10 14:03:41 · 485 阅读 · 0 评论 -
LeetCode 460. LFU 缓存 -- 哈希查询+双向链表
实现 LFUCache 类:LFUCache(int capacity) - 用数据结构的容量 capacity 初始化对象int get(int key) - 如果键 key 存在于缓存中,则获取键的值,否则返回 -1。void put(int key, int value) - 如果键 key 已存在,则变更其值;如果键不存在,请插入键值对。当缓存达到其容量 capacity 时,则应该在插入新项之前,移除最不经常使用的项。原创 2023-03-04 20:12:40 · 599 阅读 · 0 评论 -
LeetCode 982. 按位与为零的三元组 -- 哈希统计
按位与三元组 是由下标 (i, j, k) 组成的三元组,并满足下述全部条件:nums[i] & nums[j] & nums[k] == 0 ,其中 & 表示按位与运算符。原创 2023-03-04 14:19:08 · 547 阅读 · 0 评论 -
LeetCode 146. LRU 缓存 -- 哈希map+双向链表
示例:输入输出解释// 缓存是 {1=1}// 缓存是 {1=1, 2=2}// 返回 1// 该操作会使得关键字 2 作废,缓存是 {1=1, 3=3}// 返回 -1 (未找到)// 该操作会使得关键字 1 作废,缓存是 {4=4, 3=3}// 返回 -1 (未找到)// 返回 3// 返回 4提示:最多调用 2 * 105 次 get 和 put。原创 2023-03-03 13:40:04 · 227 阅读 · 0 评论 -
LeetCode 面试题 05.02. 二进制数转字符串
面试题 05.02. 二进制数转字符串提示中等90相关企业二进制数转字符串。给定一个介于0和1之间的实数(如0.72),类型为double,打印它的二进制表达式。如果该数字无法精确地用32位以内的二进制表示,则打印“ERROR”。示例1:输入:0.625输出:“0.101”示例2:输入:0.1输出:“ERROR”提示:0.1无法被二进制准确表示提示:32位包括输出中的 “0.” 这两位。题目保证输入用例的小数位数最多只有 6 位。原创 2023-03-02 13:08:43 · 144 阅读 · 1 评论 -
LeetCode 1145. 二叉树着色游戏 -- 简单搜索
最开始时:「一号」玩家从 [1, n] 中取一个值 x(1原创 2023-02-28 17:42:53 · 473 阅读 · 0 评论 -
LeetCode 1144. 递减元素使数组呈锯齿状
如果符合下列情况之一,则数组 A 就是 锯齿数组:每个偶数索引对应的元素都大于相邻的元素,即 A[0] > A[1] < A[2] > A[3] < A[4] > …或者,每个奇数索引对应的元素都大于相邻的元素,即 A[0] < A[1] > A[2] < A[3] > A[4] < …返回将数组 nums 转换为锯齿数组所需的最小操作次数。示例 1:输入:nums = [1,2,3]输出:2解释:我们可以把 2 递减到 0,或把 3 递减到 1。原创 2023-02-28 15:35:53 · 312 阅读 · 0 评论 -
LeetCode 92. 反转链表 II
示例 1:输入:head = [1,2,3,4,5], left = 2, right = 4输出:[1,4,3,2,5]示例 2:输入:head = [5], left = 1, right = 1输出:[5]提示:链表中节点数目为 n进阶: 你可以使用一趟扫描完成反转吗?原创 2023-02-24 20:46:52 · 102 阅读 · 0 评论 -
LeetCode 160. 相交链表 -- 消除长度差
图示两个链表在节点 c1 开始相交:题目数据 保证 整个链式结构中不存在环。注意,函数返回结果后,链表必须 保持其原始结构。自定义评测:评测系统 的输入如下(你设计的程序 不适用 此输入):intersectVal - 相交的起始节点的值。如果不存在相交节点,这一值为 0listA - 第一个链表listB - 第二个链表skipA - 在 listA 中(从头节点开始)跳到交叉节点的节点数skipB - 在 listB 中(从头节点开始)跳到交叉节点的节点数。原创 2023-02-22 18:51:54 · 350 阅读 · 0 评论 -
LeetCode 105. 从前序与中序遍历序列构造二叉树 -- 数据结构基础
示例 1:输入: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]输出: [3,9,20,null,null,15,7]示例 2:输入: preorder = [-1], inorder = [-1]输出: [-1]提示:preorder 和 inorder 均 无重复 元素inorder 均出现在 preorderpreorder 保证 为二叉树的前序遍历序列inorder 保证 为二叉树的中序遍历序列。原创 2023-02-14 15:17:08 · 271 阅读 · 0 评论 -
LeetCode 2315. 统计星号
请你返回 不在 竖线对之间,s 中 ‘*’ 的数目。注意,每个竖线 ‘|’ 都会 恰好 属于一个对。示例 1:输入:s = “l|eet|ceo|*de|”。第一和第二条竖线 ‘|’ 之间的字符不计入答案。同时,第三条和第四条竖线 ‘|’ 之间的字符也不计入答案。不在竖线对之间总共有 2 个星号,所以我们返回 2。示例 2:输入:s = “iamprogrammer”输出:0解释:在这个例子中,s 中没有星号。所以返回 0。原创 2023-01-29 23:25:39 · 328 阅读 · 0 评论 -
LeetCode 2086. 从房屋收集雨水需要的最少水桶数 -- 动态规划
你可以在 空位 放置水桶,从相邻的房屋收集雨水。位置在 i - 1 或者 i + 1 的水桶可以收集位置为 i 处房屋的雨水。一个水桶如果相邻两个位置都有房屋,那么它可以收集 两个 房屋的雨水。在确保 每个 房屋旁边都 至少 有一个水桶的前提下,请你返回需要的 最少 水桶数。如果无解请返回 -1。示例 1:输入:street = “H…H”输出:2解释:我们可以在下标为 1 和 2 处放水桶。“H…H” -> “HBBH”(‘B’ 表示放置水桶)。原创 2022-12-28 18:52:01 · 121 阅读 · 0 评论 -
LeetCode 1750. 删除字符串两端相同字符后的最短长度 -- 双指针
选择字符串 s 一个 非空 的前缀,这个前缀的所有字符都相同。选择字符串 s 一个 非空 的后缀,这个后缀的所有字符都相同。前缀和后缀在字符串中任意位置都不能有交集。前缀和后缀包含的所有字符都要相同。同时删除前缀和后缀。请你返回对字符串 s 执行上面操作任意次以后(可能 0 次),能得到的 最短长度。示例 1:输入:s = “ca”输出:2解释:你没法删除任何一个字符,所以字符串长度仍然保持不变。示例 2:输入:s = “cabaabac”输出:0。原创 2022-12-28 18:31:20 · 144 阅读 · 0 评论 -
LeetCode 1781. 所有子字符串美丽值之和
比方说,“abaacc” 的美丽值为 3 - 1 = 2。给你一个字符串 s ,请你返回它所有子字符串的 美丽值 之和。示例 1:输入:s = “aabcb”输出:5解释:美丽值不为零的字符串包括 [“aab”,“aabc”,“aabcb”,“abcb”,“bcb”] ,每一个字符串的美丽值都为 1。示例 2:输入:s = “aabcbaa”输出:17提示:s 只包含小写英文字母。原创 2022-12-12 12:37:53 · 180 阅读 · 0 评论 -
LeetCode 33. 搜索旋转排序数组 -- 二分判断区间
在传递给函数之前,nums 在预先未知的某个下标 k(0原创 2022-12-11 17:34:33 · 98 阅读 · 0 评论 -
LeetCode 1827. 最少操作使数组递增
比方说,如果 nums = [1,2,3] ,你可以选择增加 nums[1] 得到 nums = [1,3,3]。请你返回使 nums 严格递增 的 最少 操作次数。我们称数组 nums 是 严格递增的 ,当它满足对于所有的 0原创 2022-12-11 17:02:26 · 517 阅读 · 0 评论 -
LeetCode 1775. 通过最少操作次数使数组的和相等 --双指针
每次操作中,你可以选择 任意 数组中的任意一个整数,将它变成 1 到 6 之间 任意 的值(包含 1 和 6)。请你返回使 nums1 中所有数的和与 nums2 中所有数的和相等的最少操作次数。如果无法使两个数组的和相等,请返回 -1。示例 1:输入:nums1 = [1,2,3,4,5,6], nums2 = [1,1,2,2,2,2]输出:3解释:你可以通过 3 次操作使 nums1 中所有数的和与 nums2 中所有数的和相等。以下数组下标都从 0 开始。原创 2022-12-11 16:54:03 · 305 阅读 · 0 评论 -
LeetCode 1884. 鸡蛋掉落-两枚鸡蛋 -- 动态规划
已知存在楼层 f ,满足 0原创 2022-12-11 13:57:01 · 453 阅读 · 0 评论 -
LeetCode 1780. 判断一个数字是否可以表示成三的幂的和
对于一个整数 y ,如果存在整数 x 满足 y == 3x ,我们称这个整数 y 是三的幂。原创 2022-12-09 20:35:23 · 223 阅读 · 0 评论 -
LeetCode 429. N 叉树的层序遍历 -- DFS
树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。示例 1:输入:root = [1,null,3,2,4,null,5,6]输出:[[1],[3,2,4],[5,6]]示例 2:输入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]输出:[[1],[2,3,4,5],[6,7,8,9,10],[11,12,13],[14]]提示:树的原创 2022-12-05 12:39:04 · 119 阅读 · 0 评论 -
LeetCode 1769. 移动所有球到每个盒子所需的最小操作数 -- 前缀和
在一步操作中,你可以将 一个 小球从某个盒子移动到一个与之相邻的盒子中。第 i 个盒子和第 j 个盒子相邻需满足 abs(i - j) == 1 。注意,操作执行后,某些盒子中可能会存在不止一个小球。返回一个长度为 n 的数组 answer ,其中 answer[i] 是将所有小球移动到第 i 个盒子所需的 最小 操作数。每个 answer[i] 都需要根据盒子的 初始状态 进行计算。示例 1:输入:boxes = “110”输出:[1,1,3]解释:每个盒子对应的最小操作数如下:输入:boxes =原创 2022-12-05 12:24:42 · 191 阅读 · 0 评论 -
LeetCode 1779. 找到最近的有相同 X 或 Y 坐标的点 --结构体排序
请返回距离你当前位置 曼哈顿距离 最近的 有效 点的下标(下标从 0 开始)。如果有多个最近的有效点,请返回下标 最小 的一个。如果没有有效点,请返回 -1 。两个点 (x1, y1) 和 (x2, y2) 之间的 曼哈顿距离 为 abs(x1 - x2) + abs(y1 - y2) 。示例 1:输入:x = 3, y = 4, points = [[1,2],[3,1],[2,4],[2,3],[4,4]]输出:2解释:所有点中,[3,1],[2,4] 和 [4,4] 是有效点。有效点中,[2,4]原创 2022-12-05 12:11:44 · 65 阅读 · 0 评论 -
Leetcode 1774. 最接近目标价格的甜点成本 -- 暴力搜索
必须选择 一种 冰激凌基料。可以添加 一种或多种 配料,也可以不添加任何配料。每种类型的配料 最多两份 。给你以下三个输入:baseCosts ,一个长度为 n 的整数数组,其中每个 baseCosts[i] 表示第 i 种冰激凌基料的价格。toppingCosts,一个长度为 m 的整数数组,其中每个 toppingCosts[i] 表示 一份 第 i 种冰激凌配料的价格。target ,一个整数,表示你制作甜点的目标价格。你希望自己做的甜点总成本尽可能接近目标价格 target 。返回最接近原创 2022-12-04 16:39:52 · 103 阅读 · 0 评论 -
LeetCode 212. 单词搜索 II -- 字典树+dfs
单词必须按照字母顺序,通过 相邻的单元格 内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母在一个单词中不允许被重复使用。原创 2022-11-09 16:03:07 · 257 阅读 · 0 评论 -
LeetCode 764. 最大加号标志 -- 前缀和
返回 grid 中包含 1 的最大的 轴对齐 加号标志的阶数。如果未找到加号标志,则返回 0。一个 k 阶由 1 组成的 “轴对称”加号标志 具有中心网格 grid[r][c] == 1 ,以及4个从中心向上、向下、向左、向右延伸,长度为 k-1,由 1 组成的臂。注意,只有加号标志的所有网格要求为 1 ,别的网格可能为 0 也可能为 1。示例 1:输入: n = 5, mines = [[4, 2]]输出: 2解释: 在上面的网格中,最大加号标志的阶只能是2。一个标志已在图中标出。原创 2022-11-09 15:05:36 · 165 阅读 · 0 评论 -
LeetCode LCP 57. 打地鼠 -- 动态规划+二分查询过滤无效数据
LCP 57. 打地鼠困难11相关企业欢迎各位勇者来到力扣城,本次试炼主题为「打地鼠」。勇者面前有一个大小为3*3 的打地鼠游戏机,地鼠将随机出现在各个位置,moles[i] = [t,x,y] 表示在第 t 秒会有地鼠出现在 (x,y) 位置上,并于第 t+1 秒该地鼠消失。勇者有一把可敲打地鼠的锤子,初始时刻(即第 0 秒)锤子位于正中间的格子 (1,1),锤子的使用规则如下:锤子每经过 1 秒可以往上、下、左、右中的一个方向移动一格,也可以不移动。原创 2022-11-08 19:29:17 · 353 阅读 · 0 评论 -
LeetCode816. 模糊坐标 --模拟
原始的坐标表示法不会存在多余的零,所以不会出现类似于"00", “0.0”, “0.00”, “1.0”, “001”, "00.01"或一些其他更小的数来表示坐标。此外,一个小数点前至少存在一个数,所以也不会出现“.1”形式的数字。最后返回的列表可以是任意顺序的。而且注意返回的两个数字中间(逗号之后)都有一个空格。示例 1:输入: “(123)”输出: [“(1, 23)”, “(12, 3)”, “(1.2, 3)”, “(1, 2.3)”]示例 2:输入: “(00011)”原创 2022-11-07 14:45:59 · 104 阅读 · 0 评论 -
LeetCode 129. 求根节点到叶节点数字之和 --dfs
例如,从根节点到叶节点的路径 1 -> 2 -> 3 表示数字 123。计算从根节点到叶节点生成的 所有数字之和。叶节点 是指没有子节点的节点。示例 1:输入:root = [1,2,3]输出:25解释:从根到叶子节点路径 1->2 代表数字 12从根到叶子节点路径 1->3 代表数字 13因此,数字总和 = 12 + 13 = 25示例 2:输入:root = [4,9,0,5,1]输出:1026解释:从根到叶子节点路径 4->9->5 代表数字 495。原创 2022-11-05 17:14:27 · 133 阅读 · 0 评论