- 博客(93)
- 资源 (1)
- 问答 (2)
- 收藏
- 关注
原创 Day35:2734. 执行字串操作后的字典序最小字符串
现有长度相同的两个字符串 x 和 字符串 y ,在满足 x[i]!= y[i] 的第一个位置 i 上,如果 x[i] 在字母表中先于 y[i] 出现,则认为字符串 x 比字符串 y。给你一个仅由小写英文字母组成的字符串 s。的字符开始替换为前一个字符,到再次。是字符串中的一个连续字符序列。,也要把最后一个字符修改为。
2024-06-27 18:41:54
345
原创 Day 34:2368. 受限条件下可到达节点的数目
给你一个二维整数数组 edges ,长度为 n - 1 ,其中 edges[i] = [ai, bi] 表示树中节点 ai 和 bi 之间存在一条边。现有一棵由 n 个节点组成的无向树,节点编号从 0 到 n - 1 ,共有 n - 1 条边。用 list 数组保存每个节点可到达的节点,用一个数组保存节点是否可访问,其中。,然后深度优先搜索遍历可到达的节点,如果节点可访问性已经是。在不访问受限节点的前提下,返回你可以从节点_开始深度优先搜索,把节点的访问性设为。
2024-06-26 22:18:27
402
原创 Day 33:2673. 使二叉树所有路径值想等的最小代价
但是,会出现一种情况就是,另一棵子树的大值节点的值和小值节点的值加起来和中间值是相等的,也就是一个子树节点的值为 2,4,而另一棵子树对应层的值为 3,3。以上两种方法都是无法满足最小答案,先从叶子节点判断,同一父节点下的兄弟节点要想保证路径值相等,只能都加到最大值,那么这一父节点下的值就固定了,把最大值加到父节点下,就把父节点进化为叶子节点进行考虑。树中每个节点都有一个值,用下标从** 0** 开始、长度为 n 的整数数组 cost 表示,其中 cost[i] 是第 i + 1 个节点的值。
2024-06-25 19:56:54
420
原创 Day 32:503. 下一个更大的元素Ⅱ
有一个可以减少遍历次数的方法,如果当前值比上一个值大,且又小于上一个值找到的更大元素,那么上一个值找到的更大元素肯定也是当前值的更大元素。是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回。上面的代码居然通过了,以为它会超出时间限制呢!个元素判断是否有大于当前的元素,否则就是。,至于遍历方式注意别超出数组长度而无效。nums 中每个元素的。
2024-06-24 19:28:38
289
原创 Day 31:100334. 包含所有1的最小矩形面积Ⅰ
给你一个二维 **二进制 **数组 grid。请你找出一个边在水平方向和竖直方向上、面积。的矩形,并且满足 grid 中所有的 1 都在矩形的内部。返回这个矩形可能的 **最小 **面积。,最后一次出现 1 的最后一列。,最后一次出现 1 的最后一行。确定首次出现 1 的第一行。
2024-06-23 18:02:59
190
原创 Day 30:100346. 使二进制数组全部等于1的最小操作次数Ⅱ
因此不能使用前者的算法:每次遇到 0 的时候,遍历后续所有元素,对其进行反转,这是非常浪费时间的。一个元素指的是将它的值从 0 变 1 ,或者从 1 变 0。请你返回将 nums 中所有元素变为 1 的。开始连续三个元素反转,此题是从下标。给你一个二进制数组 nums。开始一直到数组末尾所有元素反转。你可以对数组执行以下操作。
2024-06-23 09:57:34
641
原创 Day 30:100344. 使二进制数组全部等于1的最小操作次数Ⅰ
数组中值为 0 或 1,将连续的三个数反转,使最后所有值都为 1。一个元素指的是将它的值从 0 变 1 ,或者从 1 变 0。如果无法全部变成 1 ,返回 -1。请你返回将 nums 中所有元素变为 1 的。给你一个二进制数组 nums。你可以对数组执行以下操作。,就可实现值的反转。
2024-06-23 09:46:46
324
原创 Day 29:1600. 王位继承顺序
我们定义递归函数 Successor(x, curOrder) ,给定一个人 x 和当前的继承顺序,该函数返回 x 的下一继承人。比方说,假设王国由国王,他的孩子 Alice 和 Bob (Alice 比 Bob 年长)和 Alice 的孩子 Jack 组成。但是在这里,明显不适合使用树形结构来存储,因为出生人口的添加需要查询整个树才能查询到插入点,因此会浪费大量时间。这里就是一个多叉树(族谱),王位继承顺序就是一个深度优先搜索的结果。通过以上的函数,我们总是能得到一个唯一的继承顺序。
2024-06-21 19:58:19
807
原创 Day 28:2748. 美丽下标对的数目
判断两个数字是否互质,并不麻烦,从它们最小的值开始遍历到 2,看是否都能整除。如果下标对 i、j 满足 0 ≤ i < j < nums.length ,如果 nums[i] 的。换而言之,如果 gcd(x, y) == 1 ,则认为 x 和 y 互质,其中 gcd(x, y) 是 x 和 y 的。再者,用两个数组分别保存数组值的第一个数字和最后一个数字,在判断互质时就不用每次都去计算第一个数字和最后一个数字了。对于两个整数 x 和 y ,如果不存在大于 1 的整数可以整除它们,则认为 x 和 y。
2024-06-20 20:50:17
350
原创 Day 27:2596. 检查骑士巡视方案
给你一个 n x n 的整数矩阵 grid ,由范围 [0, n * n - 1] 内的不同整数组成,其中 grid[row][col] 表示单元格 (row, col) 是骑士访问的第 grid[row][col] 个单元格。,骑士行动时可以垂直移动两个格子且水平移动一个格子,或水平移动两个格子且垂直移动一个格子。下图展示了骑士从某个格子出发可能的八种行动路线。骑士在一张 n x n 的棋盘上巡视。在 **有效 **的巡视方案中,骑士会从棋盘的。如果 grid 表示了骑士的有效巡视方案,返回 true;
2024-06-19 20:19:59
217
原创 Day 26:2288. 价格减免
是由若干个单词组成的字符串,单词之间用单个空格分隔,其中每个单词可以包含数字、小写字母、和美元符号 ‘$’。如果单词的形式为美元符号后跟着一个非负实数,那么这个单词就表示一个。给你一个字符串 sentence 表示一个句子和一个整数 discount。对于每个表示价格的单词,都在价格的基础上减免 discount% ,并。题目非常简单,就是把句子中表示价格的进行打折输出。所有更新后的价格应该表示为一个。返回表示修改后句子的字符串。为 10 位数字。
2024-06-18 20:37:52
431
原创 Day 25:1807. 替换字符串中的括号内容
你知道许多键对应的值,这些关系由二维字符串数组 knowledge 表示,其中 knowledge[i] = [keyi, valuei] ,表示键 keyi 对应的值为 valuei。为了方便查找应该被替换的字符串,将其写入到一个 Map 中,可以快速查询到替换的字符串。knowledge 中每个键最多只会出现一次。s 中不会有嵌套的括号。的位置,查找替换的字符串加入到新字符串中;否则直接加入到新字符串中。给你一个字符串 s ,它包含一些括号对,每个括号中包含一个。括号对后的结果字符串。
2024-06-17 20:44:04
670
原创 Day 24:100301. 构成整天的下标对数目II
给你一个整数数组 hours,表示以 **小时 **为单位的时间,返回一个整数,表示满足 i < j 且 hours[i] + hours[j] 构成 **整天 **的下标对 i, j 的数目。对于每一个值找对应的 24 - i 的数目,进行相乘得到结果。对于 0 和 12 要特殊考虑。例如,1 天是 24 小时,2 天是 48 小时,3 天是 72 小时,以此类推。**整天 **定义为时间持续时间是 24 小时的 **整数倍 **。把所有数据对 24 取余存储到一个数组中。
2024-06-16 19:41:45
406
原创 Day 23:289. 生命游戏
下一个状态是通过将上述规则同时应用于当前状态下的每个细胞所形成的,其中细胞的出生和死亡是同时发生的。给你 m x n 网格面板 board 的当前状态,返回下一个状态。给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态: 1 即为。,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。(live),或 0 即为。
2024-06-15 21:34:46
178
原创 Day 22:2786. 访问数组中的位置使分数最大
定义一个数组保存到当前位置且包含当前位置的最大分数,每判断一个元素是,遍历之前的元素进行累加得到最大的分数。但注意,一开始处于 0 处,所以需要从 0 开始,上述代码是可以不从 0 开始,从自己开始,因此值会偏大。,那么从前面开始就比从自己开始小,因此就能避免从自己开始。开始的整数数组 nums 和一个正整数 x。,可能会超出最小值的范围,因此可以设置为。,你一开始的分数为 nums[0]。要注意最小值的设置,因为里面存在。,因为每次都要遍历前面的结果。将当前元素的初始值初始化为。
2024-06-14 21:11:39
304
原创 Day 21:2807. 在链表中插入最大公约数
在相邻结点之间,请你插入一个新的结点,结点值为这两个相邻结点值的。给你一个链表的头 head ,每个结点包含一个整数值。是可以被两个数字整除的最大正整数。还有就是要记住节点之间的连接。重点是最大公约数的计算方式。请你返回插入之后的链表。
2024-06-13 20:58:21
448
原创 Day 20:2806. 取整购买后的账户余额
金额 roundedAmount ,满足 roundedAmount 是 10 的倍数且 abs(roundedAmount - purchaseAmount) 的值。给你一个整数purchaseAmount ,它表示你在一次购买中愿意支出的金额。在一个商店里,你进行一次购买,实际支出的金额会向。几天没写了,今天补上,所以今天写个简单的,哈哈哈。请你返回一个整数,表示你在愿意支出金额为_一开始,你的银行账户里有 100 块钱。如果存在多于一个最接近的 10 的倍数,_块钱的前提下,购买之后剩下的余额。
2024-06-12 21:56:46
324
原创 Day 19:419. 甲板上的战舰
只能水平或者垂直放置在 board 上。换句话说,战舰只能按 1 x k(1 行,k 列)或 k x 1(k 行,1 列)的形状建造,其中 k 可以是任意大小。给你一个大小为 m x n 的矩阵 board 表示甲板,其中,每个单元格可以是一艘战舰 ‘X’ 或者是一个空位 ‘.’ ,返回在甲板 board 上放置的。遇到战舰,就判断它所在的一行/列连续的是否还有其他战舰,遇到战舰就把设置为已经扫描过的。先扫描行还是先扫描列都可以,但是,如果扫描行的时候后面有连续的组成战舰,就不能再扫描列了。
2024-06-12 21:54:18
328
原创 Day 18:881. 救生艇
这里有一个条件,每艘船最多同时载两人,就变简单了。我考虑了载一个最重和最轻的人,然后还可以加一个稍微轻点的的人,这里就不用考虑这种情况了。只需要考虑最重和最轻的搭配,如果加起来超过了限制,只能最重的单独一艘船。给定数组 people。people[i]表示第 i 个人的体重 ,每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit。,每艘船可以承载的最大重量为 limit。承载所有人所需的最小船数。
2024-06-12 21:52:02
323
原创 Day 17:312. 戳气球
现在要求你戳破所有的气球。戳破第 i 个气球,你可以获得 nums[i - 1] * nums[i] * nums[i + 1] 枚硬币。这里的 i - 1 和 i + 1 代表和 i 相邻的两个气球的序号。如果 i - 1或 i + 1 超出了数组的边界,那么就当它是一个数字为 1 的气球。有 n 个气球,编号为0 到 n - 1,每个气球上都标有一个数字,这些数字存在数组 nums 中。求所能获得硬币的最大数量。
2024-06-12 21:50:37
211
原创 Day 16:3040. 相同分数的最大操作数目II
可以理解为一颗三叉树,其中一棵子树选择数组前两个元素,一棵选择第一个和最后的一个元素,最后一棵子树选择最后两个元素。函数的调用许多传入了相同的参数,因此浪费了大量时间,最后会超出时间限制。在确保** 所有操作分数相同** 的前提下,请你求出。给你一个整数数组 nums ,如果 nums。包含 2 个元素,你可以执行以下操作中的。建一个二维数组保存范围结果。请你返回按照上述要求。可以进行的操作次数。
2024-06-12 21:48:37
377
原创 Day 15:12. 整数转罗马数字
以上代码每执行一次判断,重新进入循环,又要走一次判断,将会浪费时间,可以进行优化,让其顺序执行。罗马数字是通过添加从最高到最低的小数位值的转换而形成的。具体实现并不麻烦,注意 4、9、40、90、400、900 的表示即可。给定一个整数,将其转换为罗马数字。逻辑不是很复杂,优化效果不明显。
2024-06-12 21:46:47
357
原创 Day 14:2938. 区分黑球和白球
开始的二进制字符串 s,其中 1 和 0 分别代表黑色和白色的球。不管输入字符串是何种状态,它的最终状态都是 0 在前面,1 在后面。返回「将所有黑色球都移到右侧,所有白色球都移到左侧所需的。桌子上有 n 个球,每个球的颜色不是黑色,就是白色。在每一步中,你可以选择两个相邻的球并交换它们。给你一个长度为 n 、下标从。只需要考虑将白球移到前面即可。
2024-06-12 21:43:33
537
原创 Day 13:3072. 将元素分配到两个数组中 Ⅱ
你需要使用 n 次操作,将 nums 的所有元素分配到两个数组 arr1 和 arr2 中。在第一次操作中,将 nums[1] 追加到 arr1。在第二次操作中,将 nums[2] 追加到 arr2。例如,如果 arr1 == [1,2,3] 且 arr2 == [4,5,6] ,那么 result = [1,2,3,4,5,6]。现定义函数 greaterCount ,使得 greaterCount(arr, val) 返回数组 arr 中** 严格大于** val 的元素数量。
2024-06-12 21:39:36
374
原创 Day 12:3067. 在带权树网络中统计可连接服务器对数目
给你一棵无根带权树,树中总共有 n 个节点,分别表示 n 个服务器,服务器从 0 到 n - 1 编号。选择 c 作为根节点,不同子树中进行深度搜索,在不同子树的节点,就不会有公共边,不同子树中满足条件的节点数相乘就是所得结果。上述用二维数组存储的方法,浪费了大量空间,一个节点至于少数节点连接而有权值,大部分存储为 0,因此造成空间的浪费。如果两个服务器 a ,b 和 c 满足以下条件,那么我们称服务器 a 和 b 是通过服务器 c。不需要考虑 a 和 b 的大小关系,我们选择一对,总有一个大的值。
2024-06-04 10:29:38
620
原创 Day 11:2559. 统计范围内的元音字符串数
用一个 dp[i][j] 数组保存从 i 到 j 范围内(包括 i 和 j)元音字符串的结果,也就是每次从查询范围内遍历一次计算结果。这是以空间换时间的方法。实际上 dp 数组只使用了上三角的部分,可以使用一维数组存储二维数组上三角部分的值。**注意:**元音字母是 ‘a’、‘e’、‘i’、‘o’ 和 ‘u’。返回一个整数数组,其中数组的第 i 个元素对应第 i 个查询的答案。以上方法未通过最后一个测试用例。这两个值)并且以元音开头和结尾的字符串的数目。用一个数组保存每个字符串是不是元音字符串。
2024-06-03 16:49:25
258
原创 Day 10:100322. 删除星号以后字典序最小的字符串
删除 * 号左边一个字典序最小的字符,有多个,删除一个,虽是如此,但是还有另一个要求,剩余字符串连接而成的字典序最小,因此要删除离 * 号最近的一个字典序最小的字符。但是不能直接删除,如果直接删除会影响保存的索引,因此用一个数组先保存删除的索引,之后从后往前删除。用一个 26 维的数组保存每个字母出现的位置,遇到星号,查找字典序最小的字符的索引。请你返回删除所有 ‘*’ 字符以后,剩余字符连接而成的 字典序最小 的字符串。给你一个字符串 s。它可能包含任意数量的 ‘你的任务是删除所有的 '
2024-06-02 16:25:41
659
原创 Day 9:2829. k-avoiding 数组的最小总和
上述会有一个 bug,例如 n = 3, k =5 的情况,当判断 1 时,4 是不存在的,不用处理;当判断 2 时,删除 3,加一个 3 后面的数,也就是 4。因此 ,从 k / 2 往 1 遍历,就不会出现判断时没有的元素,后来又被加上去的情况。因为判断会先删除小的,再删除大的。n 个不同正整数的最小总和,那就是从 1 到 n 的总和,但是还有一个要求就是不存在任何求和等于 k 的。从 1 开始判断,到 k / 2,删除和为 k 的最大的一个值,在加上一个 n 后的元素。数组的可能的最小总和。
2024-06-01 13:38:46
472
原创 Day 8:1461. 检查一个字符串是否包含所有长度为 K 的二进制子串
给你一个二进制字符串 s 和一个整数 k。如果所有长度为 k 的二进制字符串都是 s 的子串,请返回 true ,否则请返回 false。截取每个长度为 k 的字符串,加入 Set 中,它包含所有的长度为 k 的二进制字符串,那么 set 的大小就是 2^k。
2024-05-31 18:26:51
317
原创 Day 7:2745. 构造最长的新字符串
给你三个整数 x ,y 和 z。这三个整数表示你有 x 个 “AA” 字符串,y 个 “BB” 字符串,和 z 个 “AB” 字符串。你需要选择这些字符串中的部分字符串(可以全部选择也可以一个都不选择),将它们按顺序连接得到一个新的字符串。新字符串不能包含子字符串 “AAA” 或者 “BBB”。请你返回新字符串的最大可能长度。是一个字符串中一段连续的字符序列。
2024-05-30 14:31:27
336
原创 Day 6:2981. 找出出现至少三次的最长特殊子字符串 I
出现三次的特殊字符串,最理想的情况,是这个特殊字符串出现字符串中的三处地方(中间是有其他字符隔开的),比如 “aabaabaa”,那么就可以提取每段,就是出现三次,这种情况下最长长度就是每段出现一次,最长长度就是最短的那段的长度。用一个数组保存每个字母每段的长度,题中说明字符串都是小写字母,并且只需要保存最长的三段(保持递增更好计算哦),因此使用一个 26 * 4 的数组(保存最长的三段使用 *4 的原因后续说明)。有三段,可能考虑三段不是最优结果,也有可能考虑两段的时候结果更好哟!是字符串中的一个连续。
2024-05-29 20:05:53
491
原创 Day 5:2785. 将字符串中的元音字母排序
元音字母为 ‘a’ ,‘e’ ,‘i’ ,‘o’ 和 ‘u’ ,它们可能是小写字母也可能是大写字母,辅音字母是除了这 5 个字母以外的所有字母。两个 List,分别保存元音字母和元音字母的位置,而其中,原因字母是要排序的,而与元音字母的位置是不变的,将其排序后的位置,插入进入即可。开始的字符串 s ,将 s 中的元素重新。请你返回结果字母串。
2024-05-28 19:15:03
315
原创 day 4:2028. 找出缺失的观测数据
现有一份 n + m 次投掷单个** 六面** 骰子的观测数据,骰子的每个面从 1 到 6 编号。给你一个长度为 m 的整数数组 rolls ,其中 rolls[i] 是第 i 次观测的值。比较一下代码 1 和 代码 2 的区别,就是局部变量的位置,一个在作用域包括 for 循环外,一个只作用在循环内。需要判断得到的 rest 是否符合要求,不符合要求就直接返回 null 或一个长度为 0 的数组。哈哈,非常浪费时间,在一些特殊情况下,即结果都为 1 或都为 6,可能永远也取不到想要的值。
2024-05-27 18:23:34
456
原创 Day 3:1738. 找出第 K 大的异或坐标值
用相同大小的数组保存 (a, b) 的异或值,则 (a, b) = (a, b - 1) ^ (a - 1, b) ^ (a - 1, b - 1) ^ matrix(a, b)。(a, b - 1) ^ (a - 1, b) 计算两次 (a - 1, b - 1) 范围内的数据,因此再 ^ (a - 1, b - 1)。其中异或坐标值表示的是:(a, b) 异或坐标值表示矩阵中从 (0, 0) 到 (a, b) 范围内所有元素的异或值。因此会存在 x ^ y ^x = y。矩阵中坐标 (a, b) 的。
2024-05-26 21:02:15
347
原创 2024.05.26 第 399 场周赛
对于每个查询 i,首先将 nums[posi] 设置为 xi,然后计算查询 i 的答案,该答案为 nums 中 **不包含相邻元素 **的子序列的 **最大 **和。给你一个整数数组 nums 和一个二维数组 queries,其中 queries[i] = [posi, xi]。如果 nums1[i] 可以被 nums2[j] * k 整除,则称数对 (i, j) 为。给你两个整数数组 nums1 和 nums2,长度分别为 n 和 m。返回** 优质数对 **的总数。对字母进行计数,加入字符串即可。
2024-05-26 16:19:55
342
原创 2024.05.25 第 131 场双周赛
对于每个查询 queries[i] ,你需要找到 nums 中第 queries[i] 个 x 的位置,并返回它的下标。请你返回一个 boolean 数组results ,如果第 i 个操作类型 2 的操作你可以放置物块,那么 results[i] 为 true ,否则为 false。对于操作类型2,判断是否能放置物块,在障碍物数组中遍历到查询的位置,判断障碍物之间的间距是否大于等于物块的长度。对于操作类型 1,添加障碍物,将其放入一个数组中,存储障碍物的坐标,并保证坐标是递增的。
2024-05-26 16:19:00
704
Spring thymeleaf Sping 实战5
2021-05-25
Android studio开发过程中遇到的问题
2020-06-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人