From cf655b194dbd3e41fdf28afc03040ef28f28a774 Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Tue, 16 Nov 2021 13:38:00 +0200 Subject: [PATCH 1/5] Added task 198. --- .../s0198_house_robber/Solution.java | 22 +++++++++++++++++++ .../s0198_house_robber/SolutionTest.java | 18 +++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 src/main/java/g0101_0200/s0198_house_robber/Solution.java create mode 100644 src/test/java/g0101_0200/s0198_house_robber/SolutionTest.java diff --git a/src/main/java/g0101_0200/s0198_house_robber/Solution.java b/src/main/java/g0101_0200/s0198_house_robber/Solution.java new file mode 100644 index 000000000..75fcc3939 --- /dev/null +++ b/src/main/java/g0101_0200/s0198_house_robber/Solution.java @@ -0,0 +1,22 @@ +package g0101_0200.s0198_house_robber; + +public class Solution { + public int rob(int[] nums) { + if (nums.length == 0) { + return 0; + } + if (nums.length == 1) { + return nums[0]; + } + if (nums.length == 2) { + return Math.max(nums[0], nums[1]); + } + int profit[] = new int[nums.length]; + profit[0] = nums[0]; + profit[1] = Math.max(nums[1], nums[0]); + for (int i = 2; i < nums.length; i++) { + profit[i] = Math.max(profit[i - 1], nums[i] + profit[i - 2]); + } + return profit[nums.length - 1]; + } +} diff --git a/src/test/java/g0101_0200/s0198_house_robber/SolutionTest.java b/src/test/java/g0101_0200/s0198_house_robber/SolutionTest.java new file mode 100644 index 000000000..7ebac8792 --- /dev/null +++ b/src/test/java/g0101_0200/s0198_house_robber/SolutionTest.java @@ -0,0 +1,18 @@ +package g0101_0200.s0198_house_robber; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.Test; + +public class SolutionTest { + @Test + public void rob() { + assertThat(new Solution().rob(new int[] {1, 2, 3, 1}), equalTo(4)); + } + + @Test + public void rob2() { + assertThat(new Solution().rob(new int[] {2, 7, 9, 3, 1}), equalTo(12)); + } +} From 2f4f6654d1bc3a4922b447e266cfb824800b220e Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Tue, 16 Nov 2021 13:47:17 +0200 Subject: [PATCH 2/5] Added task 199. --- .../Solution.java | 38 +++++++++++++++++++ .../SolutionTest.java | 24 ++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 src/main/java/g0101_0200/s0199_binary_tree_right_side_view/Solution.java create mode 100644 src/test/java/g0101_0200/s0199_binary_tree_right_side_view/SolutionTest.java diff --git a/src/main/java/g0101_0200/s0199_binary_tree_right_side_view/Solution.java b/src/main/java/g0101_0200/s0199_binary_tree_right_side_view/Solution.java new file mode 100644 index 000000000..1d5d056a0 --- /dev/null +++ b/src/main/java/g0101_0200/s0199_binary_tree_right_side_view/Solution.java @@ -0,0 +1,38 @@ +package g0101_0200.s0199_binary_tree_right_side_view; + +import com_github_leetcode.TreeNode; +import java.util.ArrayList; +import java.util.List; + +/* + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode() {} + * TreeNode(int val) { this.val = val; } + * TreeNode(int val, TreeNode left, TreeNode right) { + * this.val = val; + * this.left = left; + * this.right = right; + * } + * } + */ +public class Solution { + public List rightSideView(TreeNode root) { + List list = new ArrayList(); + recurse(root, 0, list); + return list; + } + + private void recurse(TreeNode node, int level, List list) { + if (node != null) { + if (list.size() < level + 1) { + list.add(node.val); + } + recurse(node.right, level + 1, list); + recurse(node.left, level + 1, list); + } + } +} diff --git a/src/test/java/g0101_0200/s0199_binary_tree_right_side_view/SolutionTest.java b/src/test/java/g0101_0200/s0199_binary_tree_right_side_view/SolutionTest.java new file mode 100644 index 000000000..4740bf27e --- /dev/null +++ b/src/test/java/g0101_0200/s0199_binary_tree_right_side_view/SolutionTest.java @@ -0,0 +1,24 @@ +package g0101_0200.s0199_binary_tree_right_side_view; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import com_github_leetcode.TreeNode; +import java.util.Arrays; +import org.junit.Test; + +public class SolutionTest { + @Test + public void rightSideView() { + TreeNode left = new TreeNode(2, null, new TreeNode(5)); + TreeNode right = new TreeNode(3, null, new TreeNode(4)); + TreeNode root = new TreeNode(1, left, right); + assertThat(new Solution().rightSideView(root), equalTo(Arrays.asList(1, 3, 4))); + } + + @Test + public void rightSideView2() { + TreeNode root = new TreeNode(1, null, new TreeNode(3)); + assertThat(new Solution().rightSideView(root), equalTo(Arrays.asList(1, 3))); + } +} From c57252e9496c73a49faa46383353a3ecab0819c7 Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Tue, 16 Nov 2021 13:54:32 +0200 Subject: [PATCH 3/5] Added task 200. --- .../s0200_number_of_islands/Solution.java | 29 +++++++++++++++ .../s0200_number_of_islands/SolutionTest.java | 35 +++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 src/main/java/g0101_0200/s0200_number_of_islands/Solution.java create mode 100644 src/test/java/g0101_0200/s0200_number_of_islands/SolutionTest.java diff --git a/src/main/java/g0101_0200/s0200_number_of_islands/Solution.java b/src/main/java/g0101_0200/s0200_number_of_islands/Solution.java new file mode 100644 index 000000000..7ffbde2b8 --- /dev/null +++ b/src/main/java/g0101_0200/s0200_number_of_islands/Solution.java @@ -0,0 +1,29 @@ +package g0101_0200.s0200_number_of_islands; + +public class Solution { + public int numIslands(char[][] grid) { + int islands = 0; + if (grid != null && grid.length != 0 && grid[0].length != 0) { + for (int i = 0; i < grid.length; i++) { + for (int j = 0; j < grid[0].length; j++) { + if (grid[i][j] == '1') { + dfs(grid, i, j); + islands++; + } + } + } + } + return islands; + } + + private void dfs(char[][] grid, int x, int y) { + if (x < 0 || grid.length <= x || y < 0 || grid[0].length <= y || grid[x][y] != '1') { + return; + } + grid[x][y] = 'x'; + dfs(grid, x + 1, y); + dfs(grid, x - 1, y); + dfs(grid, x, y + 1); + dfs(grid, x, y - 1); + } +} diff --git a/src/test/java/g0101_0200/s0200_number_of_islands/SolutionTest.java b/src/test/java/g0101_0200/s0200_number_of_islands/SolutionTest.java new file mode 100644 index 000000000..5b14a2c58 --- /dev/null +++ b/src/test/java/g0101_0200/s0200_number_of_islands/SolutionTest.java @@ -0,0 +1,35 @@ +package g0101_0200.s0200_number_of_islands; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +import org.junit.Test; + +public class SolutionTest { + @Test + public void numIslands() { + assertThat( + new Solution() + .numIslands( + new char[][] { + {'1', '1', '1', '1', '0'}, + {'1', '1', '0', '1', '0'}, + {'1', '1', '0', '0', '0'}, + {'0', '0', '0', '0', '0'} + }), + equalTo(1)); + } + + public void numIslands2() { + assertThat( + new Solution() + .numIslands( + new char[][] { + {'1', '1', '0', '0', '0'}, + {'1', '1', '0', '0', '0'}, + {'0', '0', '1', '0', '0'}, + {'0', '0', '0', '1', '1'} + }), + equalTo(3)); + } +} From 33528fadbedc5dcaa0d1be79fae726986b91a216 Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Tue, 16 Nov 2021 13:57:07 +0200 Subject: [PATCH 4/5] Fixed checkstyle. --- src/main/java/g0101_0200/s0198_house_robber/Solution.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/g0101_0200/s0198_house_robber/Solution.java b/src/main/java/g0101_0200/s0198_house_robber/Solution.java index 75fcc3939..b325a971b 100644 --- a/src/main/java/g0101_0200/s0198_house_robber/Solution.java +++ b/src/main/java/g0101_0200/s0198_house_robber/Solution.java @@ -11,7 +11,7 @@ public int rob(int[] nums) { if (nums.length == 2) { return Math.max(nums[0], nums[1]); } - int profit[] = new int[nums.length]; + int[] profit = new int[nums.length]; profit[0] = nums[0]; profit[1] = Math.max(nums[1], nums[0]); for (int i = 2; i < nums.length; i++) { From b60999a8475068b2025ec9a4c8d39227812f2cd2 Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Tue, 16 Nov 2021 13:59:24 +0200 Subject: [PATCH 5/5] Fixed sonar. --- .../g0101_0200/s0199_binary_tree_right_side_view/Solution.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/g0101_0200/s0199_binary_tree_right_side_view/Solution.java b/src/main/java/g0101_0200/s0199_binary_tree_right_side_view/Solution.java index 1d5d056a0..254f99bb4 100644 --- a/src/main/java/g0101_0200/s0199_binary_tree_right_side_view/Solution.java +++ b/src/main/java/g0101_0200/s0199_binary_tree_right_side_view/Solution.java @@ -21,7 +21,7 @@ */ public class Solution { public List rightSideView(TreeNode root) { - List list = new ArrayList(); + List list = new ArrayList<>(); recurse(root, 0, list); return list; }