Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit f0a83a5

Browse files
committed
update
1 parent 4e68659 commit f0a83a5

File tree

880 files changed

+13148
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

880 files changed

+13148
-0
lines changed

algorithm/pom.xml

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
7+
<groupId>com.andy</groupId>
8+
<artifactId>leetcode</artifactId>
9+
<version>1.0-SNAPSHOT</version>
10+
<dependencies>
11+
<dependency>
12+
<groupId>org.testng</groupId>
13+
<artifactId>testng</artifactId>
14+
<version>7.6.1</version>
15+
<scope>test</scope>
16+
</dependency>
17+
<dependency>
18+
<groupId>JUNIT</groupId>
19+
<artifactId>JUNIT</artifactId>
20+
<version>4.12</version>
21+
<scope>test</scope>
22+
</dependency>
23+
<dependency>
24+
<groupId>org.apache.commons</groupId>
25+
<artifactId>commons-lang3</artifactId>
26+
<version>3.12.0</version>
27+
<scope>compile</scope>
28+
</dependency>
29+
<dependency>
30+
<groupId>JUNIT</groupId>
31+
<artifactId>JUNIT</artifactId>
32+
<version>4.12</version>
33+
<scope>compile</scope>
34+
</dependency>
35+
</dependencies>
36+
37+
38+
</project>
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package BFS_DFS;
2+
3+
import binaryTree.TreeNode;
4+
5+
import java.util.ArrayList;
6+
import java.util.LinkedList;
7+
import java.util.PriorityQueue;
8+
import java.util.Queue;
9+
10+
/**
11+
* 102. 二叉树层序遍历
12+
*/
13+
14+
public class BinaryTreeLevelOrderTraversal {
15+
16+
public ArrayList<ArrayList<Integer>> binaryTreeLevelOrderTraversal(TreeNode root) {
17+
ArrayList<ArrayList<Integer>> res = new ArrayList<>();
18+
19+
// 设置一个队列,队列中存放根节点
20+
Queue<TreeNode> queue = new LinkedList<>();
21+
queue.offer(root);
22+
23+
while(!queue.isEmpty()) {
24+
int size = queue.size();
25+
// 将当前队列中的所有节点向四周扩散
26+
ArrayList<Integer> temp = new ArrayList<>();
27+
for(int i=0; i<size; i++) {
28+
// 获取当前节点
29+
TreeNode cur = queue.poll();
30+
temp.add(cur.val);
31+
32+
// 添加到队列中
33+
if(cur.left != null) {
34+
queue.add(cur.left);
35+
}
36+
if(cur.right != null) {
37+
queue.add(cur.right);
38+
}
39+
}
40+
res.add(temp);
41+
}
42+
43+
44+
return res;
45+
}
46+
47+
48+
49+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package BFS_DFS;
2+
3+
/**
4+
* 107 二叉树的层序遍历 II
5+
*/
6+
7+
import binaryTree.TreeNode;
8+
9+
import java.util.ArrayList;
10+
import java.util.LinkedList;
11+
import java.util.Queue;
12+
13+
public class BinaryTreeLevelOrderTraversalII {
14+
15+
public ArrayList<ArrayList<Integer>> binaryTreeLevelOrderTraverseII(TreeNode root) {
16+
ArrayList<ArrayList<Integer>> res = new ArrayList<>();
17+
18+
Queue<TreeNode> queue = new LinkedList<>();
19+
queue.offer(root);
20+
21+
while(!queue.isEmpty()) {
22+
int size = queue.size();
23+
ArrayList<Integer> temp = new ArrayList<>();
24+
25+
for(int i=0; i<size; i++) {
26+
TreeNode cur = queue.poll();
27+
temp.add(cur.val);
28+
29+
if(cur.left!=null) {
30+
queue.offer(cur.left);
31+
}
32+
if(cur.right!=null) {
33+
queue.offer(cur.right);
34+
}
35+
}
36+
37+
res.add(0, temp);
38+
}
39+
40+
return res;
41+
}
42+
43+
44+
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package BFS_DFS;
2+
3+
import binaryTree.TreeNode;
4+
import org.junit.Test;
5+
6+
import java.util.ArrayList;
7+
import java.util.LinkedList;
8+
import java.util.Queue;
9+
10+
/**
11+
* 103. 二叉树锯齿形层序遍历
12+
*/
13+
14+
public class BinaryTreeZigzagLevelOrderTraversal {
15+
16+
public ArrayList<ArrayList<Integer>> binaryTreeZigzagLevelOrderTraversal(TreeNode root) {
17+
ArrayList<ArrayList<Integer>> res = new ArrayList<>();
18+
19+
if(root==null) {
20+
return res;
21+
}
22+
23+
Queue<TreeNode> queue = new LinkedList<>();
24+
queue.offer(root);
25+
// 用于记录遍历方向
26+
boolean leftToRight = false;
27+
while(!queue.isEmpty()) {
28+
int size = queue.size();
29+
30+
ArrayList<Integer> temp = new ArrayList<>();
31+
32+
for(int i=0; i<size; i++) {
33+
TreeNode cur = queue.poll();
34+
temp.add(cur.val);
35+
36+
if(cur.left!=null) {
37+
if(leftToRight) {
38+
queue.offer(cur.left);
39+
} else {
40+
queue.offer(cur.right);
41+
}
42+
43+
if(leftToRight) {
44+
queue.offer(cur.right);
45+
} else {
46+
queue.offer(cur.left);
47+
}
48+
}
49+
}
50+
res.add(temp);
51+
52+
// 改变遍历方向
53+
leftToRight = !leftToRight;
54+
}
55+
56+
return res;
57+
}
58+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package BFS_DFS;
2+
3+
/**
4+
* 1905 统计子岛屿
5+
*/
6+
7+
public class CountSubIslands {
8+
9+
public int countSubIsland(int[][] grid1, int[][] grid2) {
10+
int res=0;
11+
12+
// 预处理,淹没掉非子岛
13+
for(int i=0; i< grid1.length; i++) {
14+
for(int j=0; j<grid1[0].length; j++) {
15+
if(grid1[i][j]==0 && grid2[i][j]==1) {
16+
// 淹没掉grid2岛
17+
dfs(i, j, grid2);
18+
}
19+
}
20+
}
21+
22+
// 计算子岛
23+
for(int i=0; i<grid2.length;i++) {
24+
for(int j=0; j<grid2[0].length; j++) {
25+
if(grid2[i][j]==1) {
26+
dfs(i, j, grid2);
27+
res += 1;
28+
}
29+
}
30+
}
31+
32+
return res;
33+
}
34+
35+
void dfs(int i, int j, int[][] grid) {
36+
if(i<0 || j<0 || i>=grid.length || j>=grid[0].length) {
37+
return;
38+
}
39+
40+
if(grid[i][j]==0) {
41+
return;
42+
}
43+
44+
grid[i][j]=0;
45+
dfs(i-1, j, grid);
46+
dfs(i+1, j, grid);
47+
dfs(i,j-1, grid);
48+
dfs(i, j+1, grid);
49+
50+
}
51+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package BFS_DFS;
2+
3+
/**
4+
* 695 岛屿最大面积
5+
*/
6+
7+
public class MaxAreaIsland {
8+
9+
int area = 0;
10+
11+
public int maxAreaIsland(int[][] grid) {
12+
int res=0;
13+
for(int i=0; i<grid.length; i++) {
14+
for(int j=0; j<grid[0].length; j++) {
15+
if(grid[i][j]==1) {
16+
dfs(i, j, grid);
17+
res = Math.max(res, area);
18+
area = 0;
19+
}
20+
}
21+
}
22+
23+
return res;
24+
}
25+
26+
void dfs(int i, int j, int[][] grid) {
27+
if(i<0 || j<0 || i>=grid.length || j>=grid[0].length) {
28+
return;
29+
}
30+
31+
if(grid[i][j]==0) {
32+
return;
33+
}
34+
35+
grid[i][j]=0;
36+
area += 1;
37+
dfs(i-1, j, grid);
38+
dfs(i+1, j, grid);
39+
dfs(i, j-1, grid);
40+
dfs(i, j+1, grid);
41+
}
42+
43+
44+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package BFS_DFS;
2+
3+
import binaryTree.TreeNode;
4+
5+
import java.util.LinkedList;
6+
import java.util.Queue;
7+
8+
/**
9+
* 111. 二叉树的最小深度
10+
*/
11+
12+
public class MinimumDepthBinaryTree {
13+
14+
public int minimumDepthBinaryTree(TreeNode root) {
15+
int res = 0;
16+
17+
if(root==null) {
18+
return res;
19+
}
20+
21+
Queue<TreeNode> queue = new LinkedList<>();
22+
queue.offer(root);
23+
res += 1;
24+
25+
while (!queue.isEmpty()) {
26+
int sz = queue.size();
27+
28+
for(int i=0; i<sz; i++) {
29+
TreeNode cur = queue.poll();
30+
if(cur.left==null || cur.right==null) {
31+
return res;
32+
}
33+
}
34+
35+
res += 1;
36+
}
37+
38+
return res;
39+
}
40+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package BFS_DFS;
2+
3+
/**
4+
* 1254 统计封闭岛屿的数量
5+
*/
6+
7+
8+
public class NumberClosedIslands {
9+
10+
public int numberClosedIslands(int[][] grid) {
11+
int res=0;
12+
13+
for(int i=0; i<grid.length; i++) {
14+
dfs(i, 0, grid);
15+
dfs(i, grid[0].length-1, grid);
16+
}
17+
18+
for(int j=0; j<grid[0].length; j++) {
19+
dfs(0, j, grid);
20+
dfs(grid.length-1, j, grid);
21+
}
22+
23+
for(int i=0;i<grid.length;i++) {
24+
for(int j=0;j<grid[0].length; j++) {
25+
if(grid[i][j]==0) {
26+
res += 1;
27+
dfs(i, j, grid);
28+
}
29+
}
30+
}
31+
32+
return res;
33+
}
34+
35+
void dfs(int i, int j, int[][] grid) {
36+
if(i<0 || j<0 || i>=grid.length || j>=grid[0].length) {
37+
return;
38+
}
39+
40+
// 海水
41+
if(grid[i][j]==1) {
42+
return;
43+
}
44+
45+
grid[i][j]=1;
46+
dfs(i-1, j, grid);
47+
dfs(i+1, j, grid);
48+
dfs(i, j-1, grid);
49+
dfs(i, j+1, grid);
50+
}
51+
}

0 commit comments

Comments
 (0)