今日学习内容

3DGS

力扣每日一题

3D接雨水

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class Solution {
private static final int[][] DIRS = {{0, -1}, {0, 1}, {-1, 0}, {1, 0}};

public int trapRainWater(int[][] heightMap) {
int m = heightMap.length, n = heightMap[0].length;
PriorityQueue<int[]> pq = new PriorityQueue<>((a, b) -> (a[0] - b[0]));
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (i == 0 || i == m - 1 || j == 0 || j == n - 1) {
pq.add(new int[]{heightMap[i][j], i, j}); //相当于存放木桶边界
heightMap[i][j] = -1; // 标记 (i,j) 访问过
}
}
}

int ans = 0;
while (!pq.isEmpty()) {
int[] t = pq.poll(); // 去掉短板
int minHeight = t[0], i = t[1], j = t[2]; // minHeight 是木桶的短板
for (int[] d : DIRS) {
int x = i + d[0], y = j + d[1]; // (i,j) 的邻居
if (0 <= x && x < m && 0 <= y && y < n && heightMap[x][y] >= 0) { // (x,y) 没有访问过
// 如果 (x,y) 的高度小于 minHeight,那么接水量为 minHeight - heightMap[x][y]
ans += Math.max(minHeight - heightMap[x][y], 0);
// 给木桶新增一块高为 max(minHeight, heightMap[x][y]) 的木板
pq.add(new int[]{Math.max(minHeight, heightMap[x][y]), x, y});
heightMap[x][y] = -1; // 标记 (x,y) 访问过
}
}
}
return ans;
}
}

Java复习进度

Java进阶之路
集合篇框架写完了.

Java SE
56/56
Java集合框架
30/30
Java并发编程
14 -> 16 /71
JVM
MySQL
55/83
Redis
14/57
Spring
0/41
操作系统
计算机网络
MyBatis
RocketMQ
分布式
微服务
设计模式
Linux

算法

三道题目.

简历制作

项目-TecHub

项目-派聪明

生活篇