算法刷题记录
文章平均质量分 66
Miraclo_acc
积极输出带动主动输入
展开
-
LC-1976. 到达目的地的方案数(Dijkstra + DP)
中等你在一个城市里,城市由n个路口组成,路口编号为0到n - 1,某些路口之间有道路。输入保证你可以从任意路口出发到达其他任意路口,且任意两个路口之间最多有一条路。给你一个整数n和二维整数数组roads,其中表示在路口ui和vi之间有一条需要花费timei时间才能通过的道路。你想知道花费从路口0出发到达路口n - 1的方案数。请返回花费到达目的地的。由于答案可能很大,将结果对109 + 7后返回。原创 2024-03-05 09:47:43 · 575 阅读 · 0 评论 -
周赛382(模拟、枚举、脑经急转弯、位运算(试填法))
Alice 和 Bob 在一个长满鲜花的环形草地玩一个回合制游戏。环形的草地上有一些鲜花,Alice 到 Bob 之间顺时针有。,该字符串由用户输入。按键变更的定义是:使用与上次使用的按键不同的键。等修饰键不计入按键变更,也就是说,如果用户先输入字母。你需要从数组中选出一个满足下述条件的子集。返回满足这些条件的子集中,元素数量的。,你的任务是求出满足以下条件的所有。返回用户输入过程中按键变更的次数。请你返回满足题目描述的数对。表示按键变更一次,而。一次操作中,你可以选择。原创 2024-01-30 17:12:59 · 1144 阅读 · 0 评论 -
双周赛122(模拟、冒泡排序、分组循环、脑经急转弯)
那么你可以将这两个元素交换。请你返回一个整数,它表示进行任意次操作以后。如果你可以使数组变有序,请你返回。个子数组中第一个元素的下标距离。你的任务是通过进行以下操作。元素在二进制下数位为。请你返回这些子数组的。请你返回这些子数组的。原创 2024-01-30 17:11:50 · 766 阅读 · 0 评论 -
周赛381(模拟、BFS、贪心)
表示所有满足要求的房屋对的数量,即从一个房屋到另一个房屋需要经过的。表示所有满足要求的房屋对的数量,即从一个房屋到另一个房屋需要经过的。小写英文字母集合相映射,可以通过按压按键来组成单词。小写英文字母集合相映射,可以通过按压按键来组成单词。下面给出了一种电话键盘上字母到按键的映射作为示例。下面给出了一种电话键盘上字母到按键的映射作为示例。,都存在一条街道连接编号为。),你需要找出所有满足要求的。,都存在一条街道连接编号为。),你需要找出所有满足要求的。,我们需要按一次键来输入。,我们需要按一次键来输入。原创 2024-01-30 17:11:15 · 187 阅读 · 0 评论 -
周赛380(哈希+计数、KMP+二分+枚举、二分+数位DP)
先二分找 >= x 的第一个元素下标,然后该元素下标-1就是,原创 2024-01-15 20:57:04 · 1056 阅读 · 1 评论 -
周赛379(排序、分类讨论、记忆化搜索(动态规划))
在最优选择情形下改变至多一处下标对应字符后,用整数表示并返回操作结束时得到的最大分割数量。如果存在多个对角线长度相同的矩形,返回面积最。假定你只能移动白色棋子,返回捕获黑皇后所需的。下标的对应字符更改为另一个小写英文字母。你需要执行以下分割操作,直到字符串。中剩下的元素插入到集合。,它们的长度都是偶数。原创 2024-01-14 08:34:17 · 996 阅读 · 0 评论 -
双周赛121(模拟、位运算、BFS、数位DP上下界)
你也可以将一个数的前导 0 翻转。,那么我们称这个前缀是一个。结束的子字符串,那么我们称。,请你返回达成这一目标的。你可以对数组执行以下操作。元素的按位异或和得到。翻转第四个数位,得到。原创 2024-01-14 08:07:01 · 965 阅读 · 0 评论 -
周赛378(中心扩散法、分组循环)
如果可以选择两个或更多元素,其按位或运算结果存在尾随零,返回。的长度,如果不存在出现至少三次的特殊子字符串,则返回。的长度,如果不存在出现至少三次的特殊子字符串,则返回。如果一个字符串仅由单一字符组成,那么它被称为。如果一个字符串仅由单一字符组成,那么它被称为。对于每个查询,你的任务是判断执行操作后能否让。给你一个仅由小写英文字母组成的字符串。给你一个仅由小写英文字母组成的字符串。不是特殊字符串,而字符串。不是特殊字符串,而字符串。,不存在尾随零,而数字。是字符串中的一个连续。是字符串中的一个连续。原创 2024-01-03 22:32:08 · 845 阅读 · 0 评论 -
周赛377
Alice 和 Bob 决定玩一个游戏,游戏中每一轮 Alice 和 Bob 都会各自执行一次操作。,田地内部有一些水平栅栏和垂直栅栏,分别由数组。田地的面积,或者如果无法形成正方形田地则返回。**注意:**田地外围两个水平栅栏(坐标。由于答案可能很大,所以请返回结果对。你就可以选择字符串中的一个字符。如果不可能完成转换,则返回。如果不可能完成转换,则返回。的操作,但是任两次操作必须满足。矩形田地,其两个对角分别是。,你就可以选择字符串中的。,同时还有一个空数组。)所能形成的最大面积的。原创 2023-12-25 20:52:47 · 1065 阅读 · 0 评论 -
周赛376(哈希表+模拟、排序+贪心、中位数贪心+预处理回文数+二分、中位数贪心+前缀和)
包含所有的子数组。如果不可能满足条件,就返回一个空数组。如果有多个答案,返回。众数指的是数组中出现次数最多的数。一个元素的频率指的是数组中这个元素的出现次数。如果一个正整数正着读和反着读都相同,那么我们称这个数是。请你返回一个整数,表示执行任意次特殊操作后使。如果一个数组中的所有元素都等于一个整数。最终数组的频率分数定义为数组中众数的。返回一个下标从 0 开始、长度为。将这个数组划分为一个或多个长度为。每一次特殊操作中,你需要。,那么我们称这个数组是一个。请你返回你可以得到的。任务是找出重复的数字。原创 2023-12-20 09:27:03 · 855 阅读 · 0 评论 -
LC-2132. 用邮票贴满网格图(二维差分)
困难给你一个m x n的二进制矩阵grid,每个格子要么为0(空)要么为1(被占据)。给你邮票的尺寸为。我们想将邮票贴进二进制矩阵中,且满足以下和如果在满足上述要求的前提下,可以放入邮票,请返回true,否则返回false。01。原创 2023-12-14 12:15:53 · 168 阅读 · 0 评论 -
周赛375(差分思想、快速幂、双指针)
子数组,如果不存在包含了相同数字的两个子数组,则认为是一种。次的子数组,并返回满足这一条件的子数组的数目。返回一个整数,表示按顺序执行测试操作后。子数组是数组中的一个连续元素序列。你的任务是按照顺序测试每个设备。由于答案可能很大,请返回答案对。如果满足以下公式,则下标。请你统计有多少满足 「将数组分割成一个或多个。个设备的电池百分比。原创 2023-12-11 17:28:42 · 172 阅读 · 0 评论 -
双周赛119(哈希表、贪心、双指针+哈希表、二进制枚举子集+Floyd算法)
个分部,它们之间有的有道路连接。一开始,所有分部通过这些道路两两之间互相可以到达。请你返回关闭分部的可行方案数目,满足每个方案里剩余分部之间的最远距离不超过。公司意识到在分部之间旅行花费了太多时间,所以它们决定关闭一些分部(),同时保证剩下的分部之间两两互相可以到达且最远距离不超过。,关闭一个分部后,与之相连的所有道路不可通行。指的是一个数组中一段连续非空的元素序列。在字母表中是相邻的,那么我们称它们是。如果一个数组中所有元素的频率都。,两个分部之间可能会有多条道路。指的是它在数组中的出现次数。原创 2023-12-11 17:27:20 · 161 阅读 · 0 评论 -
周赛374(枚举、思维题、分组循环+枚举、组合数学)
一开始没有感冒的小朋友最后得感冒的顺序序列。请你返回所有感冒序列的数目。是被传染的小朋友存在且还没有得感冒。包含一开始得了感冒的小朋友的位置。数组,删除过程不会改变剩余元素的相对位置。经过有限的秒数后,队列中所有小朋友都会感冒。,表示可用的硬币的面值,以及一个整数。的小朋友得了感冒,他会传染给下标为。包含一开始就得了感冒的小朋友的下标。位小朋友站成一排,按顺序编号为。指的是一个字符串中一段连续。是通过删除原始数组的一些(还没感冒的小朋友会被传染。以数组形式返回给定数组中。返回需要添加到数组中的。原创 2023-12-09 09:57:24 · 162 阅读 · 0 评论 -
LC-2008. 出租车的最大盈利(记忆化搜索==>动态规划)
中等你驾驶出租车行驶在一条有n个地点的路上。这n个地点从近到远编号为1到n,你想要从1开到n,通过接乘客订单盈利。你只能沿着编号递增的方向前进,不能改变方向。乘客信息用一个下标从开始的二维数组rides表示,其中表示第i位乘客需要从地点starti前往endi,愿意支付tipi元的小费。你选择接单的乘客i,你可以元。你同时只能接一个订单。给你n和rides,请你返回在最优接单方案下,你能盈利多少元。**注意:**你可以在一个地点放下一位乘客,并在同一个地点接上另一位乘客。原创 2023-12-08 11:14:35 · 131 阅读 · 0 评论 -
LC-1466. 重新规划路线(DFS、BFS)
中等n座城市,从0到n-1编号,其间共有n-1条路线。因此,要想在两座不同城市之间旅行只有唯一一条路线可供选择(路线网形成一颗树)。去年,交通运输部决定重新规划路线,以改变交通拥堵的状况。路线用表示,其中表示从城市a到b的一条有向路线。今年,城市 0 将会举办一场大型比赛,很多游客都想前往城市 0。请你帮助重新规划路线方向,使每个城市都可以访问城市 0。返回需要变更方向的最小路线数。题目数据每个城市在重新规划路线方向后都能到达城市 0。原创 2023-12-07 09:23:29 · 82 阅读 · 0 评论 -
LC-1423. 可获得的最大点数(子数组和、枚举)
中等几张卡牌,每张卡牌都有一个对应的点数。点数由整数数组cardPoints给出。每次行动,你可以从行的开头或者末尾拿一张卡牌,最终你必须正好拿k张卡牌。你的点数就是你拿到手中的所有卡牌的点数之和。给你一个整数数组cardPoints和整数k,请你返回可以获得的最大点数。原创 2023-12-03 10:15:12 · 97 阅读 · 0 评论 -
LC.1094. 拼车(差分)
中等车上最初有capacity个空座位。车向一个方向行驶(也就是说,给定整数capacity和一个数组trips表示第i次旅行有乘客,接他们和放他们的位置分别是fromi和toi。这些位置是从汽车的初始位置向东的公里数。当且仅当你可以在所有给定的行程中接送所有乘客时,返回true,否则请返回false。原创 2023-12-02 08:07:40 · 104 阅读 · 0 评论 -
周赛373(模拟、前缀和、排序+分组循环、质因数分解+前缀和+哈希表)
分别表示字符串中元音字母和辅音字母的数量。分别表示字符串中元音字母和辅音字母的数量。如果初始矩阵和最终矩阵完全相同,则返回。中的对应字符的字典序更小,则认为数组。如果某个字符串满足以下条件,则称其为。子字符串是字符串中的一个连续字符序列。在一次操作中,你可以选择任意两个下标。如果某个字符串满足以下条件,则称其为。子字符串是字符串中的一个连续字符序列。处是两个数组第一个不同的位置,且。为除了元音字母之外的所有字母。为除了元音字母之外的所有字母。返回执行任意次操作后能得到的。第一个不同的位置上,数组。原创 2023-11-27 16:23:36 · 108 阅读 · 0 评论 -
双周赛118(模拟、分组循环、记忆化搜索==>动态规划、单调队列优化DP)
你在一个水果超市里,货架上摆满了玲琅满目的奇珍异果。你可以执行任意次操作。每次操作中,你需要选择一个。,表示下标在数组中对应的单词包含字符。空洞的面积,正方形空洞的意思是正方形。个金币去购买它以便能免费获得接下来的。请你返回执行任意次操作以后,可以得到的。,并将这个子数组用它所包含元素的。替换掉子数组,然后数组会变为。如果满足以下条件之一,你可以。请你返回获得所有水果所需要的。组成,一开始所有区域均为。个水果需要花费的金币数目。指的是一个数组中一段连续。请你返回移除一些线段后(同时给你两个整数数组。原创 2023-11-26 21:21:50 · 138 阅读 · 0 评论 -
LC-828. 统计子串中的唯一字符(贡献法 思考变化量)
困难我们定义了一个函数来统计字符串s中的唯一字符,并返回唯一字符的个数。,则其中"L""T""C""O""D"都是唯一字符,因为它们只出现一次,所以。本题将会给你一个字符串s,我们需要返回的总和,其中t是s的子字符串。输入用例保证返回值为 32 位整数。注意,某些子字符串可能是重复的,但你统计时也必须算上这些重复的子字符串(也就是说,你必须统计s的所有子字符串中的唯一字符)。原创 2023-11-26 14:25:30 · 113 阅读 · 0 评论 -
周赛372(正难则反、枚举+贪心、异或位运算、离线+单调栈)
如果存在某种方法能够使这三个字符串相等,请返回使它们相等所需的。返回「将所有黑色球都移到右侧,所有白色球都移到左侧所需的。个查询中,Alice 和 Bob 可以相遇的。你可以根据需要对这三个字符串执行以下操作。在每一步中,你可以选择两个相邻的球并交换它们。在每次操作中,你可以选择其中一个长度至少为。,Alice 和 Bob 不能相遇,令。个球,每个球的颜色不是黑色,就是白色。个查询中,Alice 在建筑。由于答案可能会很大,返回它对。,那么这个人可以移动到建筑。分别代表黑色和白色的球。原创 2023-11-21 12:31:54 · 150 阅读 · 0 评论 -
LC-2216. 美化数组的最少删除数(贪心(脑经急转弯))
中等给你一个下标从开始的整数数组nums,如果满足下述条件,则认为数组nums是一个i % 2 == 0i注意,空数组同样认为是美丽数组。你可以从nums中删除任意数量的元素。当你删除一个元素时,被删除元素右侧的所有元素将会向左移动一个单位以填补空缺,而左侧的元素将会保持。返回使nums变为美丽数组所需删除的元素数目*。原创 2023-11-21 10:14:19 · 109 阅读 · 0 评论 -
双周赛117(容斥原理、记忆化搜索==>动态规划、分组背包方案数、脑经急转弯)
个商店的物品已经按照价值非递增排好序了,也就是说对于所有。每一天,你可以在一个商店里购买一件物品。,所有物品都视为不同的物品。比方说如果你已经从商店。,你还可以在别的商店里购买其他商店的物品。位小朋友,确保没有任何小朋友得到超过。位小朋友,确保没有任何小朋友得到超过。是一个字符串中一段连续的字符序列。颗糖果,请你返回满足此条件下的。颗糖果,请你返回满足此条件下的。的字符重新排列后,新字符串包含。由于答案可能很大,将答案对。只包含小写英文字母,原创 2023-11-18 09:41:54 · 134 阅读 · 0 评论 -
周赛371(模拟、哈希+排序+枚举、异或性质)
中选出两个整数,且满足:这两个整数可以形成一个强数对,并且它们的按位异或(中选出两个整数,且满足:这两个整数可以形成一个强数对,并且它们的按位异或(操作次数,如果无法同时满足两个条件,则返回。,你可以选择同一个整数两次来形成一个强数对。,你可以选择同一个整数两次来形成一个强数对。在每次操作中,你可以选择一个在范围。以列表形式,按任意顺序,返回所有。你的任务是找到满足以下条件所需的。)值是在该数组所有强数对中的。)值是在该数组所有强数对中的。,这两个数组的长度都是。所有可能的强数对中的。原创 2023-11-17 22:39:05 · 196 阅读 · 0 评论 -
双周赛116(模拟、贪心、记忆化搜索==> 动态规划、线段树)
如果可以将一个字符串分割成一个或者更多满足以下条件的子字符串,那么我们称这个字符串是。指的是从原数组中删除一些或者不删除任何元素后,剩余元素保持原来的顺序构成的数组。子数组指的是一个数组里面一段连续。子数组指的是一个数组里面一段连续。由于答案可能会很大,请你将它对。由于答案可能会很大,请你将它对。给你一个长度为偶数下标从。原创 2023-11-16 11:30:58 · 129 阅读 · 0 评论 -
周赛370(模拟、树形DP(正难则反)、树状数组优化DP)
如果从根节点出发,到任意叶子节点经过的路径上的节点值之和都不等于 0 ,那么我们称这棵树是。你可以对这棵树执行任意次操作,但要求执行完所有操作以后树是。一个冠军,则返回将会成为冠军的队伍。,如果这个子序列满足以下条件,我们说它是。在这场比赛中,如果不存在某支强于。返回这场比赛中将会成为冠军的队伍。在这场比赛中,如果不存在某支强于。)后,剩余元素保持相对顺序得到的。指的是从原数组中删除一些元素(个节点的无向树,节点编号为。表示这个有向无环图,其中。,请你返回你可以获得的。请你返回一个整数,表示。原创 2023-11-15 22:33:03 · 140 阅读 · 0 评论 -
双周赛116(模拟、贪心、记忆化搜索==> 动态规划)
如果可以将一个字符串分割成一个或者更多满足以下条件的子字符串,那么我们称这个字符串是。指的是从原数组中删除一些或者不删除任何元素后,剩余元素保持原来的顺序构成的数组。子数组指的是一个数组里面一段连续。子数组指的是一个数组里面一段连续。由于答案可能会很大,请你将它对。由于答案可能会很大,请你将它对。给你一个长度为偶数下标从。原创 2023-11-14 20:43:17 · 119 阅读 · 0 评论 -
LC-1334. 阈值距离内邻居最少的城(Floyd算法,记忆化搜索 ==> 动态规划(0x3f))
中等有n个城市,按从0到n-1编号。给你一个边数组edges,其中代表fromi和toi两个城市之间的双向加权边,距离阈值是一个整数。返回能通过某些路径到达其他城市数目最少、且路径距离为的城市。如果有多个这样的城市,则返回编号最大的城市。注意,连接城市和的路径的距离等于沿该路径的所有边的权重之和。原创 2023-11-14 09:42:05 · 74 阅读 · 0 评论 -
LC-2300. 咒语和药水的成功对数(排序+贪心、排序+二分)
中等给你两个正整数数组spells和potions,长度分别为n和m,其中spells[i]表示第i个咒语的能量强度,potions[j]表示第j瓶药水的能量强度。同时给你一个整数success。一个咒语和药水的能量强度如果success,那么它们视为一对的组合。请你返回一个长度为n的整数数组pairs,其中pairs[i]是能跟第i个咒语成功组合的数目。原创 2023-11-10 15:03:43 · 297 阅读 · 0 评论 -
周赛369(位运算、分类讨论、记忆化搜索==>动态规划、树形DP)
从根节点开始,你必须收集所有金币。要想收集节点上的金币,必须先收集该节点的祖先节点上的金币。正整数,并且满足两个数组中所有元素的和。相等和 ,如果无法使两数组相等,则返回。树节点的金币之后可以获得的最大积分。个节点组成的无向树,节点编号从。以整数形式返回使数组变为。子数组是数组中的一个连续。你必须将两个数组中的。原创 2023-11-03 13:33:47 · 92 阅读 · 0 评论 -
LC-1155. 掷骰子等于目标和的方法数(记忆化搜索==>动态规划)
中等这里有n个一样的骰子,每个骰子上都有k个面,分别标号为1到k。给定三个整数nk和target,返回可能的方式(从总共kn种方式中)滚动骰子的数量,使正面朝上的数字之和等于target。答案可能很大,你需要对109 + 7。原创 2023-10-24 10:11:08 · 81 阅读 · 0 评论 -
周赛368(模拟、前后缀分解、枚举+数学、预处理+划分型DP)
请你返回一个整数,表示得到一个合法分组方案的。如果不存在满足条件的三元组,返回。如果不存在满足条件的三元组,返回。满足下述全部条件,则认为它是一个。满足下述全部条件,则认为它是一个。请你返回一个整数,表示需要修改的。我们想将下标进行分组,使得。的山形三元组,并返回其。的山形三元组,并返回其。需要修改的字符数目最少。原创 2023-10-23 09:41:27 · 93 阅读 · 0 评论 -
周赛367(模拟、枚举 + 有序哈希、同向双指针、前后缀分解)
( 出于对空间复杂度分析的目的,输出数组。如果存在多组可供选择的下标对,只需要返回其中任意一组即可。如果存在多组可供选择的下标对,只需要返回其中任意一组即可。之中任意元素的全部前缀元素和后缀的乘积都在。如果存在满足题目要求的两个下标,则。如果存在满足题目要求的两个下标,则。中不含美丽子字符串,则返回一个。请 **不要使用除法,**且在。中的对应字符,则认为字符串。个满足下述所有条件的下标。,则称这个子字符串是一个。个满足下述所有条件的下标。如果满足以下条件,则称。时间复杂度内完成此题。原创 2023-10-22 10:20:22 · 92 阅读 · 0 评论 -
LC-1402. 做菜顺序(记忆化搜索 ==> 动态规划、贪心)
困难一个厨师收集了他n道菜的满意程度,这个厨师做出每道菜的时间都是 1 单位时间。一道菜的 「」定义为烹饪这道菜结束的时间(包含之前每道菜所花费的时间)乘以这道菜的满意程度,也就是time[i]。返回厨师在准备了一定数量的菜肴后可以获得的最大总和。你可以按顺序安排做菜的顺序,你也可以选择放弃做某些菜来获得更大的总和。原创 2023-10-22 09:04:30 · 193 阅读 · 0 评论 -
LC-2316. 统计无向图中无法互相到达点对数(DFS、并查集)
中等给你一个整数n,表示一张中有n个节点,编号为0到n - 1。同时给你一个二维整数数组edges,其中表示节点ai和bi之间有一条边。请你返回的不同。原创 2023-10-21 09:10:15 · 219 阅读 · 0 评论 -
LC-1726. 同积元组(哈希、哈希+数学)
中等给你一个由正整数组成的数组nums,请你返回满足的元组的数量。其中abc和d都是nums中的元素,且。原创 2023-10-19 09:31:00 · 94 阅读 · 0 评论 -
周赛366(记忆化搜索)
简单给你两个正整数n和m。现定义两个整数num1和num2num1[1, n]mnum2[1, n]m返回整数。原创 2023-10-15 14:16:13 · 94 阅读 · 0 评论 -
LC-152. 乘积最大子数组(动态规划)
中等给你一个整数数组nums,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。测试用例的答案是一个整数。是数组的连续子序列。原创 2023-10-11 16:15:38 · 69 阅读 · 0 评论 -
双周赛114(模拟、枚举 + 哈希、DFS)
一次操作中,你可以将数组的最后一个元素删除,将该元素添加到一个集合中。你可以从树中删除一些边,也可以一条边也不删,得到若干连通块。定义为连通块中所有节点值之和。如果所有连通块的值都可以被。操作次数,如果无法达成,请返回。请你在满足以上要求的条件下,返回。你可以对数组执行以下两种操作。是一个数组中一段连续的元素。个节点的无向树,节点编号为。整除,那么我们说这是一个。可以得到多少个子数组。请你返回所有合法分割中,请你返回使数组为空的。原创 2023-10-11 12:02:31 · 132 阅读 · 0 评论