- 博客(44)
- 收藏
- 关注
原创 acwing 1230. K倍区间
求区间[l,r]的和是k的倍数的个数。我们规定s[i]表示第1个元素到第i个元素的和。那么s[r] - s[l-1]就是区间[l,r]的和。区间[l,r]的和是k的倍数即(s[r] - s[l-1])%k == 0 即s[r]%k == s[l-1]%k。样例中前缀和为 1 3 6 10 15,%2之后为1 1 0 0 1,两两比较余数后,只能找到四个区间。我们发现,我们忽略了两个单序列,因为单个序列取余也可以构成k倍区间。通过判断前缀和的余数是否相同,来得出最后k倍区间的个数。
2024-01-28 15:49:07 207
原创 acwing 95.费解的开关(递推)
你玩过“拉灯”游戏吗?25 盏灯排成一个 5×5 的方形。每一个灯都有一个开关,游戏者可以改变它的状态。每一步,游戏者可以改变某一个灯的状态。游戏者改变一个灯的状态会产生连锁反应:和这个灯上下左右相邻的灯也要相应地改变其状态。我们用数字 1 表示一盏开着的灯,用数字 0 表示关着的灯。下面这种状态给定一些游戏的初始状态,编写程序判断游戏者是否可能在 66 步以内使所有的灯都变亮。
2024-01-24 15:35:22 549
原创 二叉树练习 Leetcode 100.相同的树
给你两棵二叉树的根节点p和q,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
2024-01-19 14:53:19 428
原创 数组练习 Leetcode 1222.可以攻击国王的王后
在一个的8 x 8棋盘上,可能有多个黑皇后和一个白国王。给你一个二维整数数组queens,其中表示第i个黑皇后在棋盘上的位置。还给你一个长度为2的整数数组king,其中表示白国王的位置。返回能够直接攻击国王的黑皇后的坐标。你可以以返回答案。上面的图示显示了三个可以直接攻击国王的皇后和三个不能攻击国王的皇后(用红色虚线标记)。上面的图示显示了三个能够直接攻击国王的黑皇后和三个不能攻击国王的黑皇后(用红色虚线标记)。
2024-01-19 14:32:20 339
原创 acwing 143.最大异或对(字典树)
题目传送门:在给定的 N 个整数 A1,A2……AN 中选出两个进行 xor(异或)运算,得到的结果最大是多少?
2024-01-19 08:36:09 379
原创 数组练习 Leetcode 66.加一
给定一个由组成的数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储数字。你可以假设除了整数 0 之外,这个整数不会以零开头。[1,2,4]输入数组表示数字 123。[4,3,2,2]输入数组表示数字 4321。[1]
2024-01-18 19:27:34 433
原创 数组练习 Leetcode 566.重塑矩阵
在 MATLAB 中,有一个非常有用的函数reshape,它可以将一个m x n矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原始数据。给你一个由二维数组mat表示的m x n矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。重构后的矩阵需要将原始矩阵的所有元素以相同的填充。如果具有给定参数的reshape操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。
2024-01-17 23:37:30 962
原创 链表练习 Leetcode82.删除排序链表中的重复元素 II
给定一个已排序的链表的头head删除原始链表中所有重复数字的节点,只留下不同的数字。返回已排序的链表。
2024-01-16 17:05:56 378
原创 链表练习 Leetcode234.回文链表
给你一个单链表的头节点head,请你判断该链表是否为回文链表。如果是,返回true;否则,返回false。truefalse[1, 105]你能否用O(n)时间复杂度和O(1)空间复杂度解决此题?
2024-01-16 16:31:12 420
原创 LeetCode255.用队列实现栈
请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(pushtoppop和empty实现MyStackint pop()int top()truefalsesizeis empty// 返回 2// 返回 2// 返回 False100pushpoptopemptypoptop你能否仅用一个队列来实现栈。
2024-01-10 16:25:49 595
原创 acwing800.数组元素的目标和(双指针)
给定两个升序排序的有序数组 A 和 B,以及一个目标值 x。数组下标从 0 开始。请你求出满足 A[i]+B[j]=x 的数对 (i,j)。数据保证有唯一解。
2023-12-01 16:23:19 397
原创 KMP字符串
给定一个字符串 S,以及一个模式串 P,所有字符串中只包含大小写英文字母以及阿拉伯数字。模式串 P 在字符串 S 中多次作为子串出现。求出模式串 P 在字符串 S 中所有出现的位置的起始下标。
2023-11-30 23:41:09 1060
原创 acwing154.滑动窗口(单调队列)
给定一个大小为 n≤1e6 的数组。有一个大小为 k 的滑动窗口,它从数组的最左边移动到最右边。你只能在窗口中看到 k 个数字。每次滑动窗口向右移动一个位置。以下是一个例子:该数组为,k 为 3。你的任务是确定滑动窗口位于每个位置时,窗口中的最大值和最小值。
2023-11-28 13:33:36 432
原创 acwing828. 模拟栈(数组模拟)
push xpopemptyquery现在要对栈进行 M 个操作,其中的每个操作 3 和操作 4 都要输出相应的结果。
2023-11-27 11:59:54 323
原创 acwing827.双链表(数组模拟)
现在要对该链表进行 M 次操作,进行完所有操作后,从左到右输出整个链表。:题目中第 k 个插入的数并不是指当前链表的第 k 个数。例如操作过程中一共插入了 n 个数,则按照插入的时间顺序,这 n 个数依次为:第 1 个插入的数,第 2 个插入的数,…第 n 个插入的数。
2023-11-27 11:19:12 904
原创 acwing826. 单链表(静态链表)
现在要对该链表进行 M 次操作,进行完所有操作后,从头到尾输出整个链表。:题目中第 k 个插入的数并不是指当前链表的第 k 个数。例如操作过程中一共插入了 n 个数,则按照插入的时间顺序,这 n 个数依次为:第 1 个插入的数,第 2 个插入的数,…第 n 个插入的数。
2023-11-26 19:01:53 994 2
原创 acwing803 区间合并
给定 n 个区间 [li,ri],要求合并所有有交集的区间。注意如果在端点处相交,也算有交集。输出合并完成后的区间个数。例如:[1,3][1,3] 和 [2,6][2,6] 可以合并为一个区间 [1,6][1,6]。
2023-11-25 23:39:04 414
原创 区间和的求取(离散化)
假定有一个无限长的数轴,数轴上每个坐标上的数都是 0。现在,我们首先进行 n 次操作,每次操作将某一位置 x 上的数加 c。接下来,进行 m 次询问,每个询问包含两个整数 l 和 r,你需要求出在区间 [l,r] 之间的所有数的和。
2023-11-25 21:12:09 358
原创 逆序对的数量
给定一个长度为 n 的整数数列,请你计算数列中的逆序对的数量。逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足 i<j 且 a[i]>a[j],则其为一个逆序对;否则不是。
2023-10-04 13:32:48 187 1
原创 差分矩阵代码
输入一个 n 行 m 列的整数矩阵,再输入 q 个操作,每个操作包含五个整数 x1,y1,x2,y2,c,其中 (x1,y1) 和 (x2,y2) 表示一个子矩阵的左上角坐标和右下角坐标。每个操作都要将选中的子矩阵中的每个元素的值加上 c。请你将进行完所有操作后的矩阵输出。
2023-10-03 22:10:13 40 1
原创 算法——差分
输入一个长度为 n 的整数序列。接下来输入 m 个操作,每个操作包含三个整数 l,r,c,表示将序列中 [l,r] 之间的每个数加上 c。请你输出进行完所有操作后的序列。
2023-10-03 21:44:47 38 1
原创 区间前缀和(二维)
输入一个 n 行 m 列的整数矩阵,再输入 q 个询问,每个询问包含四个整数 x1,y1,x2,y2,表示一个子矩阵的左上角坐标和右下角坐标。对于每个询问输出子矩阵中所有数的和。
2023-10-03 21:38:27 40 1
转载 求前缀和代码
输入一个长度为 n 的整数序列。接下来再输入 m 个询问,每个询问输入一对 l,r。对于每个询问,输出原序列中从第 l 个数到第 r 个数的和。
2023-10-03 21:09:19 40 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人