Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

[pull] master from youngyangyang04:master #495

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
pull merged 10 commits into AlgorithmAndLeetCode:master from youngyangyang04:master
Oct 26, 2024
Merged
Changes from 1 commit
Commits
Show all changes
10 commits
Select commit Hold shift + click to select a range
5fb0a12
feat: 127. 骑士的攻击增加js解法
suinming Oct 1, 2024
07d219e
更正复杂度分析中的笔误
shengyufan Oct 4, 2024
2b7fc7d
删除冗余代码,增加详细注释
shengyufan Oct 4, 2024
91137dc
fix: Errata 输出输出->输入输出
Jasonyou-boy Oct 3, 2024
4eef086
feat: 0100.岛屿最大面积 Java实现
Jasonyou-boy Oct 4, 2024
9c7131e
feate: 字符串接龙 Java优化版并修复存在问题
Jasonyou-boy Oct 5, 2024
31a9066
Merge branch 'master' into feature/nextString
youngyangyang04 Oct 21, 2024
c0fef4b
Merge pull request #2770 from suinming/kamacoder-127-js
youngyangyang04 Oct 26, 2024
835fd6d
Merge pull request #2772 from shengyufan/master
youngyangyang04 Oct 26, 2024
46c48c9
Merge pull request #2777 from Jasonyou-boy/feature/nextString
youngyangyang04 Oct 26, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
feat: 0100.岛屿最大面积 Java实现
  • Loading branch information
Jasonyou-boy committed Oct 4, 2024
commit 4eef0863a293b7f2cfd36214a3281ae26093022e
123 changes: 122 additions & 1 deletion problems/kamacoder/0100.岛屿的最大面积.md
View file Open in desktop
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,128 @@ public:

## 其他语言版本

### Java
### Java

```java
import java.util.*;
import java.math.*;

/**
* DFS版
*/
public class Main{

static final int[][] dir={{0,1},{1,0},{0,-1},{-1,0}};
static int result=0;
static int count=0;

public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int m = scanner.nextInt();
int[][] map = new int[n][m];
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
map[i][j]=scanner.nextInt();
}
}
boolean[][] visited = new boolean[n][m];
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if(!visited[i][j]&&map[i][j]==1){
count=0;
dfs(map,visited,i,j);
result= Math.max(count, result);
}
}
}
System.out.println(result);
}

static void dfs(int[][] map,boolean[][] visited,int x,int y){
count++;
visited[x][y]=true;
for (int i = 0; i < 4; i++) {
int nextX=x+dir[i][0];
int nextY=y+dir[i][1];
//水或者已经访问过的跳过
if(nextX<0||nextY<0
||nextX>=map.length||nextY>=map[0].length
||visited[nextX][nextY]||map[nextX][nextY]==0)continue;

dfs(map,visited,nextX,nextY);
}
}
}
```

```java
import java.util.*;
import java.math.*;

/**
* BFS版
*/
public class Main {
static class Node {
int x;
int y;

public Node(int x, int y) {
this.x = x;
this.y = y;
}
}

static final int[][] dir = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
static int result = 0;
static int count = 0;

public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int m = scanner.nextInt();
int[][] map = new int[n][m];
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
map[i][j] = scanner.nextInt();
}
}
boolean[][] visited = new boolean[n][m];
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (!visited[i][j] && map[i][j] == 1) {
count = 0;
bfs(map, visited, i, j);
result = Math.max(count, result);
}
}
}
System.out.println(result);
}

static void bfs(int[][] map, boolean[][] visited, int x, int y) {
Queue<Node> q = new LinkedList<>();
q.add(new Node(x, y));
visited[x][y] = true;
count++;
while (!q.isEmpty()) {
Node node = q.remove();
for (int i = 0; i < 4; i++) {
int nextX = node.x + dir[i][0];
int nextY = node.y + dir[i][1];
if (nextX < 0 || nextY < 0 || nextX >= map.length || nextY >= map[0].length || visited[nextX][nextY] || map[nextX][nextY] == 0)
continue;
q.add(new Node(nextX, nextY));
visited[nextX][nextY] = true;
count++;
}
}
}
}

```


### Python

Expand Down

AltStyle によって変換されたページ (->オリジナル) /