LeetCode_单周赛_328
2024-10-20 17:30:40
6291. 数组元素和与数字和的绝对差
代码
模拟即可
class Solution {
public int differenceOfSum(int[] nums) {
int ans = 0;
int sum = 0;
for (int i = 0; i < nums.length; i++) {
int t = nums[i];
ans += t;
while (t > 0) {
sum += t % 10;
t /= 10;
}
}
return Math.abs(ans - sum);
}
}
6292. 子矩阵元素加 1
代码
差分模板
但是在处理的时候,因为差分数组下标从 1 开始比较方便,所以我们让 q 中的值都 +1
最后返回结果时,原数组 = 差分数组的前缀和
为了符合下标从 0 开始的要求,我们定义数组 a,作为结果返回,存储时下标 -1 存储
class Solution {
private int[][] b;
public int[][] rangeAddQueries(int n, int[][] q) {
b = new int[n + 10][n + 10];
for (var a : q) {
insert(a[0] + 1, a[1] + 1, a[2] + 1, a[3] + 1);
}
int[][] a = new int[n][n];
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
b[i][j] += b[i][j - 1] + b[i - 1][j] - b[i - 1][j - 1];
a[i - 1][j - 1] = b[i][j];
}
}
return a;
}
private void insert(int x1, int y1, int x2, int y2) {
b[x1][y1] += 1;
b[x2 + 1][y1] -= 1;
b[x1][y2 + 1] -= 1;
b[x2 + 1][y2 + 1] += 1;
}
}
6293. 统计好子数组的数目
代码
双指针
map存储每个数出现的次数
从左往右进行双指针,先左指针不动,一直右移右指针,直到满足条件 / 到达边界 为止
如果满足条件
- 则以 l 为左端点,r 右边的端点都满足。左端点为 l 的情况就找完了,不用再遍历左端点为 l 的情况了。
- 此时不断向右移动左指针,看是否满足(这一步用while,保证此时的右边界 r 不变)
不满足条件就继续移动
class Solution {
public long countGood(int[] a, int k) {
int l = 0, r = 1, n = a.length;
long t = 0;
long ans = 0;
boolean[] vis = new boolean[n + 10];
HashMap<Integer, Integer> map = new HashMap<>();
map.put(a[l], 1);
vis[0] = true;
while (l < r && r < n) {
if (!vis[r] && map.getOrDefault(a[r], 0) >= 1) {
t += map.get(a[r]);
}
if (!vis[r]) map.put(a[r], map.getOrDefault(a[r], 0) + 1);
vis[r] = true;
while (t >= k) {
ans += n - r;
t -= map.get(a[l]) - 1;
map.put(a[l], map.get(a[l]) - 1);
l++;
}
r++;
}
return ans;
}
}
最新文章
- php时区问题
- 发送xml报文去第三方请求获取xml报文数据
- python正则表达式的学习记录
- CentOS6.2下安装eclipse
- Android - 服务器json数据交互.
- 3DES加密算法
- BZOJ 2783 JLOI 2012 树 乘+二分法
- asp.net mvc ActionResult
- CSRF跨站
- git的一些常见命令
- What&#39;s the Difference Between Iterators and Generators in Python
- linux安装ssh服务
- python API whoami
- HTML5语音合成Speech Synthesis API简介
- 你还有没有印象?腾讯QQ16个版本界面你认识多少?
- ORACLE 监听配置
- DOS窗口带jar包运行java程序
- PCIE_DMA实例一:xapp1052详细使用说明
- Python3 深浅拷贝
- IntelliJ中的main函数和System.out.println()快捷输入方式