kk
This commit is contained in:
49
src/main/java/com/dota/gridGraph/_1254/Solution.java
Normal file
49
src/main/java/com/dota/gridGraph/_1254/Solution.java
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
package com.dota.gridGraph._1254;
|
||||||
|
|
||||||
|
class Solution {
|
||||||
|
int n;
|
||||||
|
int m;
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
new Solution().closedIsland(new int[][]{
|
||||||
|
{0,0,1,1,0,1,0,0,1,0},
|
||||||
|
{1,1,0,1,1,0,1,1,1,0},
|
||||||
|
{1,0,1,1,1,0,0,1,1,0},
|
||||||
|
{0,1,1,0,0,0,0,1,0,1},
|
||||||
|
{0,0,0,0,0,0,1,1,1,0},
|
||||||
|
{0,1,0,1,0,1,0,1,1,1},
|
||||||
|
{1,0,1,0,1,1,0,0,0,1},
|
||||||
|
{1,1,1,1,1,1,0,0,0,0},
|
||||||
|
{1,1,1,0,0,1,0,1,0,1},
|
||||||
|
{1,1,1,0,1,1,0,1,1,0}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public int closedIsland(int[][] grid) {
|
||||||
|
n = grid.length;
|
||||||
|
m = grid[0].length;
|
||||||
|
int res = 0;
|
||||||
|
var book = new boolean[n][m];
|
||||||
|
for (int i = 0; i < n; i++) {
|
||||||
|
for (int j = 0; j < m; j++) {
|
||||||
|
if (grid[i][j] == 0 && !book[i][j]) {
|
||||||
|
if (dfs(i, j, grid, book)) {
|
||||||
|
res++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean dfs(int i, int j, int[][] grid, boolean[][] book) {
|
||||||
|
if (i < 0 || j < 0 || i > n - 1 || j > m - 1) return false;
|
||||||
|
if (grid[i][j] == 1 || book[i][j]) {
|
||||||
|
book[i][j] = true;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
book[i][j] = true;
|
||||||
|
return dfs(i + 1, j, grid, book) & dfs(i - 1, j, grid, book) & dfs(i, j + 1, grid, book) & dfs(i, j - 1, grid, book);
|
||||||
|
}
|
||||||
|
}
|
43
src/main/java/com/dota/gridGraph/_16_19/Solution.java
Normal file
43
src/main/java/com/dota/gridGraph/_16_19/Solution.java
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
package com.dota.gridGraph._16_19;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
class Solution {
|
||||||
|
public int[] pondSizes(int[][] land) {
|
||||||
|
int n = land.length, m = land[0].length;
|
||||||
|
var set = new ArrayList<Integer>();
|
||||||
|
for (int i = 0; i < n; i++) {
|
||||||
|
for (int j = 0; j < m; j++) {
|
||||||
|
int t = dfs(i, j, land);
|
||||||
|
if (t > 0) {
|
||||||
|
set.add(t);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var res = new int[set.size()];
|
||||||
|
for (int i = 0; i < set.size(); i++) {
|
||||||
|
res[i] = set.get(i);
|
||||||
|
}
|
||||||
|
Arrays.sort(res);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
int[] next = new int[]{1, 0, -1};
|
||||||
|
|
||||||
|
int dfs(int i, int j, int[][] land) {
|
||||||
|
int n = land.length, m = land[0].length;
|
||||||
|
if (i < 0 || i >= n || j < 0 || j >= m || land[i][j] > 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
land[i][j] = 1;
|
||||||
|
int t = 1;
|
||||||
|
for (int i1 : next) {
|
||||||
|
for (int i2 : next) {
|
||||||
|
t += dfs(i + i1, j + i2, land);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
}
|
25
src/main/java/com/dota/gridGraph/_2658/Solution.java
Normal file
25
src/main/java/com/dota/gridGraph/_2658/Solution.java
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
package com.dota.gridGraph._2658;
|
||||||
|
|
||||||
|
class Solution {
|
||||||
|
int n = 0;
|
||||||
|
int m = 0;
|
||||||
|
|
||||||
|
public int findMaxFish(int[][] grid) {
|
||||||
|
int max = 0;
|
||||||
|
n = grid.length;
|
||||||
|
m = grid[0].length;
|
||||||
|
for (int i = 0; i < n; i++) {
|
||||||
|
for (int j = 0; j < m; j++) {
|
||||||
|
max = Math.max(max, dfs(i, j, grid));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return max;
|
||||||
|
}
|
||||||
|
|
||||||
|
int dfs(int i, int j, int[][] grid) {
|
||||||
|
if (i < 0 || i >= n || j < 0 || j >= m || grid[i][j] == 0) return 0;
|
||||||
|
int t = grid[i][j];
|
||||||
|
grid[i][j] = 0;
|
||||||
|
return t + dfs(i - 1, j, grid) + dfs(i + 1, j, grid) + dfs(i, j - 1, grid) + dfs(i, j + 1, grid);
|
||||||
|
}
|
||||||
|
}
|
72
src/main/java/com/dota/gridGraph/lcs03/Solution.java
Normal file
72
src/main/java/com/dota/gridGraph/lcs03/Solution.java
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
package com.dota.gridGraph.lcs03;
|
||||||
|
|
||||||
|
class Solution {
|
||||||
|
int max = 0;
|
||||||
|
int n = 0;
|
||||||
|
int m = 0;
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
new Solution().largestArea(new String[]{"110","231","221"});
|
||||||
|
}
|
||||||
|
|
||||||
|
public int largestArea(String[] grid) {
|
||||||
|
n = grid.length;
|
||||||
|
m = grid[0].length();
|
||||||
|
var grids = new char[n][m];
|
||||||
|
for (int i = 0; i < grid.length; i++) {
|
||||||
|
for (int j = 0; j < grid[i].length(); j++) {
|
||||||
|
grids[i][j] = grid[i].charAt(j);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var book = new boolean[n][m];
|
||||||
|
for (int i = 0; i < n; i++) {
|
||||||
|
for (int j = 0; j < m; j++) {
|
||||||
|
if (grids[i][j] == '0' || i==0||j==0||i==n-1||j==m-1) {
|
||||||
|
dfs(i, j, grids[i][j], grids);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < n; i++) {
|
||||||
|
for (int j = 0; j < m; j++) {
|
||||||
|
max = Math.max(max, df(i, j, grids[i][j], grids, book));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return max;
|
||||||
|
}
|
||||||
|
|
||||||
|
int df(int i, int j, char v, char[][] grids, boolean[][] book) {
|
||||||
|
if (i < 0 || i >= n || j < 0 || j >= m || grids[i][j] == '6' || grids[i][j] != v || book[i][j]) return 0;
|
||||||
|
// 遍历过的
|
||||||
|
book[i][j] = true;
|
||||||
|
return 1 + df(i - 1, j, v, grids, book) + df(i + 1, j, v, grids, book) + df(i, j - 1, v, grids, book) + df(i, j + 1, v, grids, book);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 靠近走廊的数字全干掉,变成6
|
||||||
|
void dfs(int i, int j, char v, char[][] grids) {
|
||||||
|
if (i < 0 || i >= n || j < 0 || j >= m || grids[i][j] == '6' || grids[i][j] != v) return;
|
||||||
|
if (grids[i][j] == '0') {
|
||||||
|
grids[i][j] = '6';
|
||||||
|
if (i + 1 < n) {
|
||||||
|
dfs(i + 1, j, grids[i + 1][j], grids);
|
||||||
|
}
|
||||||
|
if (i - 1 >= 0) {
|
||||||
|
dfs(i - 1, j, grids[i - 1][j], grids);
|
||||||
|
}
|
||||||
|
if (j + 1 < m) {
|
||||||
|
dfs(i, j + 1, grids[i][j + 1], grids);
|
||||||
|
}
|
||||||
|
if (j - 1 >= 0) {
|
||||||
|
dfs(i, j - 1, grids[i][j - 1], grids);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
grids[i][j] = '6';
|
||||||
|
dfs(i - 1, j, v, grids);
|
||||||
|
dfs(i + 1, j, v, grids);
|
||||||
|
dfs(i, j - 1, v, grids);
|
||||||
|
dfs(i, j + 1, v, grids);
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user