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存储每个数出现的次数

从左往右进行双指针,先左指针不动,一直右移右指针,直到满足条件 / 到达边界 为止

如果满足条件

  1. 则以 l 为左端点,r 右边的端点都满足。左端点为 l 的情况就找完了,不用再遍历左端点为 l 的情况了。
  2. 此时不断向右移动左指针,看是否满足(这一步用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;
}
}

最新文章

  1. php时区问题
  2. 发送xml报文去第三方请求获取xml报文数据
  3. python正则表达式的学习记录
  4. CentOS6.2下安装eclipse
  5. Android - 服务器json数据交互.
  6. 3DES加密算法
  7. BZOJ 2783 JLOI 2012 树 乘+二分法
  8. asp.net mvc ActionResult
  9. CSRF跨站
  10. git的一些常见命令
  11. What&#39;s the Difference Between Iterators and Generators in Python
  12. linux安装ssh服务
  13. python API whoami
  14. HTML5语音合成Speech Synthesis API简介
  15. 你还有没有印象?腾讯QQ16个版本界面你认识多少?
  16. ORACLE 监听配置
  17. DOS窗口带jar包运行java程序
  18. PCIE_DMA实例一:xapp1052详细使用说明
  19. Python3 深浅拷贝
  20. IntelliJ中的main函数和System.out.println()快捷输入方式

热门文章

  1. Azure DevOps Server 设置项目管理用户,用户组
  2. AdsStream的使用
  3. perl 之 join和 split
  4. Spring Cloud Alibaba 从入门到精通(2023)
  5. PGL图学习之图神经网络GNN模型GCN、GAT[系列六]
  6. 【Java集合框架002】原理层面:HashMap全解析
  7. 关于Wegame页面空白的问题解决
  8. .net 温故知新:【10】.NET ORM框架EFCore使用入门之CodeFirs、DBFirst
  9. 《MySQL必知必会》之快速入门存储过程
  10. Windows搭建Git服务器