算法刷题
文章平均质量分 73
一杯茶一包烟,一个bug改一天
dawn191228
不会修电脑
展开
-
【LeetCode:2181】合并零之间的节点(Java)
对于每两个相邻的 0 ,请你将它们之间的所有节点合并成一个节点,其值是所有已合并节点的值之和。然后将所有 0 移除,修改后的链表不应该含有任何 0。给你一个链表的头节点 head ,该链表包含由 0 分隔开的一连串整数。链表的 开端 和 末尾 的节点都满足 Node.val == 0。链表的 开端 和 末尾 节点都满足 Node.val == 0。输入:head = [0,3,1,0,4,5,2,0]输入:head = [0,1,0,3,0,2,2,0]上图表示输入的链表。输出:[1,3,4]原创 2024-09-09 15:32:51 · 820 阅读 · 0 评论 -
【LeetCode:3153】所有数对中数位差之和(Java)
你有一个数组 nums ,它只包含 正 整数,所有正整数的数位长度都 相同。两个整数的 数位差 指的是两个整数 相同 位置上不同数字的数目。数组中所有整数都相同,所以所有整数数对的数位不同之和为 0。请你返回 nums 中 所有 整数对里,数位差之和。输入:nums = [10,10,10,10]输入:nums = [13,23,12]nums 中的整数都有相同的数位长度。原创 2024-09-08 16:10:01 · 1010 阅读 · 0 评论 -
【LeetCode:977】有序数组的平方(Java)
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。解释:平方后,数组变为 [16,1,0,9,100]输入:nums = [-4,-1,0,3,10]输入:nums = [-7,-3,2,3,11]请你设计时间复杂度为 O(n) 的算法解决本问题。排序后,数组变为 [0,1,9,16,100]输出:[0,1,9,16,100]输出:[4,9,9,49,121]nums 已按 非递减顺序 排序。原创 2024-09-08 16:09:28 · 327 阅读 · 0 评论 -
【LeetCode:3174】清除数字(Java)
删除 第一个数字字符 以及它左边 最近 的 非数字 字符。一开始,我们对 s[2] 执行操作,s 变为 “c4”。然后对 s[1] 执行操作,s 变为 “”。请你返回删除所有数字字符以后剩下的字符串。输入保证所有数字都可以按以上操作被删除。s 只包含小写英文字母和数字字符。输入:s = “cb34”输入:s = “abc”给你一个字符串 s。原创 2024-09-05 18:35:16 · 519 阅读 · 0 评论 -
【LeetCode:2860】让所有学生保持开心的分组方法数(Java)
给你一个下标从 0 开始、长度为 n 的整数数组 nums ,其中 n 是班级中学生的总数。如果班主任仅选中一个学生来完成分组,那么两个学生都无法保持开心。这位学生没有被选中,并且被选中的学生人数 严格小于 nums[i]。这位学生被选中,并且被选中的学生人数 严格大于 nums[i]。输入:nums = [6,0,3,3,6,7,2,7]班主任选中下标为 1、2、3、6 的学生形成一组。返回能够满足让所有学生保持开心的分组方法的数目。班主任选中下标为 1 的学生形成一组。班主任选中所有学生形成一组。原创 2024-09-04 16:00:00 · 706 阅读 · 0 评论 -
【LeetCode:2708】一个小组的最大实力值(Java)
老师想选出一部分同学组成一个 非空 小组,且这个小组的 实力值 最大,如果这个小组里的学生下标为 i0, i1, i2, …, ik ,那么这个小组的实力值定义为 nums[i0] * nums[i1] * nums[i2] * …解释:一种构成最大实力值小组的方案是选择下标为 [0,2,3,4,5] 的学生。实力值为 3 * (-5) * 2 * 5 * (-9) = 1350 ,这是可以得到的最大实力值。输入:nums = [3,-1,-5,2,5,-9]输入:nums = [-4,-5,-4]原创 2024-09-03 17:00:00 · 286 阅读 · 0 评论 -
【CSP:202009-2】风险人群筛查(Java)
【代码】【CSP:202009-2】风险人群筛查(Java)原创 2024-09-01 15:42:46 · 344 阅读 · 0 评论 -
【CSP:202012-2】期末预测之最佳阈值(Java)
【代码】【CSP:202012-2】期末预测之最佳阈值(Java)原创 2024-08-31 15:00:00 · 320 阅读 · 0 评论 -
【CSP:202104-2】邻域均值(Java)
在进行查询时直接利用前缀和求平均值,可以降低时间复杂度。原创 2024-08-31 14:45:00 · 302 阅读 · 0 评论 -
【CSP:202109-2】非零段划分(Java)
【代码】【CSP:202109-2】非零段划分(Java)原创 2024-08-30 15:10:29 · 646 阅读 · 0 评论 -
【CSP:202112-2】序列查询新解(Java)
【代码】【CSP:202112-2】序列查询新解(Java)原创 2024-08-29 16:36:51 · 1227 阅读 · 0 评论 -
【CSP:202112-1】序列查询(Java)
【代码】【CSP:202112-1】序列查询(Java)原创 2024-08-29 16:36:37 · 637 阅读 · 0 评论 -
【CSP:202203-2】出行计划(Java)
【代码】【CSP:202203-2】出行计划(Java)原创 2024-08-28 09:45:00 · 922 阅读 · 0 评论 -
【CSP:202206-2】寻宝!大冒险!(Java)
【代码】【CSP:202206-2】寻宝!大冒险!(Java)原创 2024-08-27 12:19:25 · 276 阅读 · 0 评论 -
【CSP:202209-2】何以包邮?(Java)
【代码】【CSP:202209-2】何以包邮?(Java)原创 2024-08-26 09:42:50 · 455 阅读 · 0 评论 -
【LeetCode:690】员工的重要性(Java)
员工 1 自身的重要度是 5 ,他有两个直系下属 2 和 3 ,而且 2 和 3 的重要度均为 3。输入:employees = [[1,5,[2,3]],[2,3,[]],[3,3,[]]], id = 1。employees[i].subordinates 是第 i 名员工的直接下属的 ID 列表。你有一个保存员工信息的数据结构,它包含了员工唯一的 id ,重要度和直系下属的 id。输入:employees = [[1,2,[5]],[5,-3,[]]], id = 5。原创 2024-08-26 09:42:34 · 773 阅读 · 0 评论 -
【CSP:202212-2】训练计划(Java)
【代码】【CSP:202212-2】训练计划(Java)原创 2024-08-25 16:15:00 · 951 阅读 · 0 评论 -
【LeetCode:698】划分为k个相等的子集(Java)
给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等。说明: 有可能将其分成 4 个子集(5),(1,4),(2,3),(2,3)等于总和。输入: nums = [4, 3, 2, 3, 5, 2, 1], k = 4。输入: nums = [1,2,3,4], k = 3。每个元素的频率在 [1,4] 范围内。原创 2024-08-25 16:00:00 · 677 阅读 · 0 评论 -
【CSP:202303-2】垦田计划(Java)
【代码】【CSP:202303-2】垦田计划(Java)原创 2024-08-24 09:45:50 · 359 阅读 · 0 评论 -
【LeetCode:2779】数组的最大美丽值(Java)
数组的 子序列 定义是:经由原数组删除一些元素(也可能不删除)得到的一个新数组,且在此过程中剩余元素的顺序不发生改变。将 nums[i] 替换为范围 [nums[i] - k, nums[i] + k] 内的任一整数。在范围 [0, nums.length - 1] 中选择一个 此前没有选过 的下标 i。对数组 nums 执行上述操作任意次后,返回数组可能取得的 最大 美丽值。输入:nums = [1,1,1,1], k = 10。输入:nums = [4,6,1,2], k = 2。原创 2024-08-24 09:45:25 · 770 阅读 · 0 评论 -
【CSP:202305-2】矩阵运算(Java)
【代码】【CSP:202305-2】矩阵运算(Java)原创 2024-08-23 09:37:49 · 597 阅读 · 0 评论 -
【CSP:202305-1】重复局面(Java)
【代码】【CSP:202305-1】重复局面(Java)原创 2024-08-23 09:37:33 · 402 阅读 · 0 评论 -
【LeetCode:3133】数组最后一个元素的最小值(Java)
给你两个整数 n 和 x。你需要构造一个长度为 n 的 正整数 数组 nums ,对于所有 0 <= i < n - 1 ,满足 nums[i + 1] 大于 nums[i] ,并且数组 nums 中所有元素的按位 AND 运算结果为 x。数组 nums 可以是 [4,5,6] ,最后一个元素为 6。数组 nums 可以是 [7,15] ,最后一个元素为 15。返回 nums[n - 1] 可能的 最小 值。输入:n = 3, x = 4。输入:n = 2, x = 7。原创 2024-08-22 09:43:06 · 408 阅读 · 0 评论 -
【CSP:202309-2】坐标变换(其二)(Java)
【代码】【CSP:202309-2】坐标变换(其二)(Java)原创 2024-08-22 09:42:42 · 326 阅读 · 0 评论 -
【CSP:202309-1】坐标变换(其一)(Java)
【代码】【CSP:202309-1】坐标变换(其一)(Java)原创 2024-08-22 09:42:22 · 340 阅读 · 0 评论 -
【CSP:202312-2】因子化简(Java)
【代码】【CSP:202312-2】因子化简(Java)原创 2024-08-21 11:57:10 · 997 阅读 · 0 评论 -
【CSP:202312-1】仓库规划(Java)
【代码】【CSP:202312-1】仓库规划(Java)原创 2024-08-21 11:56:42 · 325 阅读 · 0 评论 -
【LeetCode:3】无重复字符串的最长子串(Java)
请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。给定一个字符串 s ,请你找出其中不含有重复字符的 最长 子串 的长度。解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。输入: s = “abcabcbb”s 由英文字母、数字、符号和空格组成。输入: s = “pwwkew”输入: s = “bbbbb”原创 2024-08-20 09:32:28 · 548 阅读 · 0 评论 -
【LeetCode:3154】到达第 K 级台阶的方案数(Java)
Alice 从台阶 1 开始,可以使用 任意 次操作,目标是到达第 k 级台阶。注意,Alice 可能到达台阶 k 处后,通过一些操作重新回到台阶 k 处,这视为不同的方案。执行第一种操作,从台阶 1 向下走到台阶 0。执行第一种操作,从台阶 1 向下走到台阶 0。执行第一种操作,从台阶 1 向下走到台阶 0。执行第一种操作,从台阶 1 向下走到台阶 0。执行第一种操作,向下走 1 级台阶到台阶 1。执行第一种操作,从台阶 1 向下走到台阶 0。执行第一种操作,向下走 1 级台阶到台阶 1。原创 2024-08-20 09:05:20 · 658 阅读 · 0 评论 -
【LeetCode:2244】完成所有任务需要的最少轮数(Java)
给你一个下标从 0 开始的整数数组 tasks ,其中 tasks[i] 表示任务的难度级别。在每一轮中,你可以完成 2 个或者 3 个 相同难度级别 的任务。解释:难度级别为 2 的任务只有 1 个,但每一轮执行中,只能选择完成 2 个或者 3 个相同难度级别的任务。因此,无法完成所有任务,答案为 -1。返回完成所有任务需要的 最少 轮数,如果无法完成所有任务,返回 -1。输入:tasks = [2,2,3,3,2,4,4,4,4,4]输入:tasks = [2,3,3]原创 2024-08-19 10:05:28 · 398 阅读 · 0 评论 -
【LeetCode:2595】奇偶位数(Java)
用 even 表示在 n 的二进制形式(下标从 0 开始)中值为 1 的偶数下标的个数。用 odd 表示在 n 的二进制形式(下标从 0 开始)中值为 1 的奇数下标的个数。返回整数数组 answer ,其中 answer = [even, odd]。解释:17 的二进制形式是 10001。下标 0 和 下标 4 对应的值为 1。共有 2 个偶数下标,0 个奇数下标。共有 0 个偶数下标,1 个奇数下标。解释:2 的二进制形式是 10。下标 1 对应的值为 1。给你一个 正 整数 n。原创 2024-08-19 10:05:05 · 331 阅读 · 0 评论 -
【LeetCode:77】组合(Java)
给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。你可以按 任何顺序 返回答案。输入:n = 4, k = 2。输入:n = 1, k = 1。原创 2024-08-18 14:30:00 · 200 阅读 · 0 评论 -
【LeetCode:552】学生出勤记录 II(Java)
给你一个整数 n ,表示出勤记录的长度(次数)。请你返回记录长度为 n 时,可能获得出勤奖励的记录情况 数量。可以用字符串表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤、迟到、到场)。只有"AA"不会被视为可奖励,因为缺勤次数为 2 次(需要少于 2 次)。学生 不会 存在 连续 3 天或 连续 3 天以上的迟到(‘L’)记录。按 总出勤 计,学生缺勤(‘A’)严格 少于两天。‘P’:Present,到场。‘A’:Absent,缺勤。输入:n = 10101。‘L’:Late,迟到。原创 2024-08-18 14:30:00 · 305 阅读 · 0 评论 -
【LeetCode:881】救生艇(Java)
people[i]表示第 i 个人的体重 ,船的数量不限,每艘船可以承载的最大重量为 limit。每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit。输入:people = [3,2,2,1], limit = 3。输入:people = [3,5,3,4], limit = 5。解释:4 艘船分别载 (3), (3), (4), (5)输入:people = [1,2], limit = 3。解释:3 艘船分别载 (1, 2), (2) 和 (3)解释:1 艘船载 (1, 2)原创 2024-08-17 10:50:32 · 309 阅读 · 0 评论 -
【LeetCode:3137】K周期字符串需要的最少操作次数(Java)
在一次操作中,你可以选择任意两个下标 i 和 j,其中 0 <= i, j < n ,且这两个下标都可以被 k 整除,然后用从 j 开始的长度为 k 的子串替换从 i 开始的长度为 k 的子串。如果存在某个长度为 k 的字符串 s,使得 word 可以表示为任意次数连接 s ,则称字符串 word 是 K 周期字符串。例如,如果 word == “ababab”,那么 word 就是 s = “ab” 时的 2 周期字符串。输入:word = “leetcoleet”, k = 2。原创 2024-08-17 10:14:50 · 507 阅读 · 0 评论 -
【LeetCode:3117】划分数组得到最小的值之和(Java)
输入: nums = [2,3,5,7,7,7,5], andValues = [0,7,5][[2,3,5],[7,7,7],[5]] 其中子数组的值之和为 5 + 7 + 5 = 17。[[2,3,5,7],[7,7],[5]] 其中子数组的值之和为 7 + 7 + 5 = 19。[[2,3,5,7,7],[7],[5]] 其中子数组的值之和为 7 + 7 + 5 = 19。输入: nums = [1,4,3,3,2], andValues = [0,3,3,2]子数组值之和的最小可能值为 17。原创 2024-08-16 09:01:33 · 541 阅读 · 0 评论 -
【LeetCode:1702】修改后的最大二进制字符串(Java)
如果二进制字符串 x 对应的十进制数字大于二进制字符串 y 对应的十进制数字,那么我们称二进制字符串 x 大于二进制字符串 y。操作 1 :如果二进制串包含子字符串 “00” ,你可以用 “10” 将其替换。操作 2 :如果二进制串包含子字符串 “10” ,你可以用 “01” 将其替换。比方说, “00010” -> “10010”比方说, “00010” -> “00001”输入:binary = “000110”解释:“01” 没办法进行任何转换。输入:binary = “01”原创 2024-08-15 09:56:17 · 653 阅读 · 0 评论 -
【LeetCode:3148】矩阵中的最大得分(Java)
你可以从矩阵中的任一单元格移动到另一个位于正下方或正右侧的任意单元格(不必相邻)。从值为 c1 的单元格移动到值为 c2 的单元格的得分为 c2 - c1。解释:从单元格 (0, 0) 开始,执行一次移动:从 (0, 0) 到 (0, 1)。得分为 3 - 4 = -1。输入:grid = [[9,5,7,3],[8,9,6,1],[6,7,14,3],[2,5,3,1]]输入:grid = [[4,3,2],[3,2,1]]你可以从 任一 单元格开始,并且必须至少移动一次。原创 2024-08-15 08:58:10 · 1138 阅读 · 0 评论 -
【LeetCode:2】两数相加(Java)
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]你可以假设除了数字 0 之外,这两个数都不会以 0 开头。输入:l1 = [2,4,3], l2 = [5,6,4]每个链表中的节点数在范围 [1, 100] 内。输入:l1 = [0], l2 = [0]输出:[8,9,9,9,0,0,0,1]题目数据保证列表表示的数字不含前导零。输出:[7,0,8]原创 2024-08-14 09:43:31 · 336 阅读 · 0 评论 -
【LeetCode:1035】不相交的线(Java)
但无法画出第三条不相交的直线,因为从 nums1[1]=4 到 nums2[2]=4 的直线将与从 nums1[2]=2 到 nums2[1]=2 的直线相交。输入:nums1 = [2,5,1,2,5], nums2 = [10,5,2,1,5,2]输入:nums1 = [1,3,7,1,7,5], nums2 = [1,9,2,5,1]在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数。输入:nums1 = [1,4,2], nums2 = [1,2,4]原创 2024-08-13 10:35:14 · 435 阅读 · 0 评论