diff --git a/Week01/Week01/NOTE.md b/Week01/Week01/NOTE.md new file mode 100644 index 000000000..50de30414 --- /dev/null +++ b/Week01/Week01/NOTE.md @@ -0,0 +1 @@ +学习笔记 \ No newline at end of file diff --git a/Week01/Week01/java/MoveZeroes.java b/Week01/Week01/java/MoveZeroes.java new file mode 100644 index 000000000..ee6fc62f5 --- /dev/null +++ b/Week01/Week01/java/MoveZeroes.java @@ -0,0 +1,18 @@ +class Solution { + public void moveZeroes(int[] nums) { + int index = 0; + boolean b = false; + for(int i = 0; i rMap = new HashMap<>(32); + for(int i =0;i 0) { + ten--; five--; + } else { + five -= 3; + } + break; + } + default: break; + } + if (five < 0) { + return false; + } + } + return true; + } + +} + +//在柠檬水摊上,每一杯柠檬水的售价为 5 美元。 + +//顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。 + +//每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。 + +//注意,一开始你手头没有任何零钱。 + +//如果你能给每位顾客正确找零,返回 true ,否则返回 false 。 diff --git a/Week04/java/NumberOfIslands.java b/Week04/java/NumberOfIslands.java new file mode 100644 index 000000000..cea9ff9b9 --- /dev/null +++ b/Week04/java/NumberOfIslands.java @@ -0,0 +1,58 @@ +/**给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。 + +岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。 + +此外,你可以假设该网格的四条边均被水包围。 + +  + +示例 1: + +输入: +[ +['1','1','1','1','0'], +['1','1','0','1','0'], +['1','1','0','0','0'], +['0','0','0','0','0'] +] +输出: 1 +*/ + +public class NumberOfIslands{ + void dfs(char[][] grid, int r, int c) { + int nr = grid.length; + int nc = grid[0].length; + + if (r < 0 || c < 0 || r >= nr || c >= nc || grid[r][c] == '0') { + return; + } + + grid[r][c] = '0'; + dfs(grid, r - 1, c); + dfs(grid, r + 1, c); + dfs(grid, r, c - 1); + dfs(grid, r, c + 1); + } + + public int numIslands(char[][] grid) { + if (grid == null || grid.length == 0) { + return 0; + } + + int nr = grid.length; + int nc = grid[0].length; + int num_islands = 0; + for (int r = 0; r < nr; ++r) { + for (int c = 0; c < nc; ++c) { + if (grid[r][c] == '1') { + ++num_islands; + dfs(grid, r, c); + } + } + } + + return num_islands; + } +} + +