From 760a5116b62db53bc575449a6a70c899ea21d026 Mon Sep 17 00:00:00 2001 From: ThanhNIT Date: Mon, 11 Nov 2024 21:55:47 +0700 Subject: [PATCH 1/8] Update tag for tasks 49-79 --- .../s0049_group_anagrams/Solution.java | 22 ++--- .../g0001_0100/s0051_n_queens/Solution.java | 80 ++++++++++++------- .../s0053_maximum_subarray/Solution.java | 2 +- .../g0001_0100/s0055_jump_game/Solution.java | 43 +++------- .../s0056_merge_intervals/Solution.java | 2 +- .../s0062_unique_paths/Solution.java | 2 +- .../s0064_minimum_path_sum/Solution.java | 2 +- .../s0070_climbing_stairs/Solution.java | 2 +- .../s0072_edit_distance/Solution.java | 2 +- .../s0073_set_matrix_zeroes/Solution.java | 2 +- .../s0074_search_a_2d_matrix/Solution.java | 2 +- .../s0075_sort_colors/Solution.java | 2 +- .../Solution.java | 2 +- .../g0001_0100/s0078_subsets/Solution.java | 2 +- .../s0079_word_search/Solution.java | 76 +++++++++++------- 15 files changed, 132 insertions(+), 111 deletions(-) diff --git a/src/main/java/g0001_0100/s0049_group_anagrams/Solution.java b/src/main/java/g0001_0100/s0049_group_anagrams/Solution.java index ca80a13e8..d79407ec0 100644 --- a/src/main/java/g0001_0100/s0049_group_anagrams/Solution.java +++ b/src/main/java/g0001_0100/s0049_group_anagrams/Solution.java @@ -2,7 +2,7 @@ // #Medium #Top_100_Liked_Questions #Top_Interview_Questions #Array #String #Hash_Table #Sorting // #Data_Structure_II_Day_8_String #Programming_Skills_II_Day_11 #Udemy_Strings -// #Big_O_Time_O(n*k_log_k)_Space_O(n) #2023_08_11_Time_6_ms_(92.28%)_Space_46.4_MB_(98.50%) +// #Big_O_Time_O(n*k_log_k)_Space_O(n) #2024_11_11_Time_6_ms_(97.61%)_Space_47.7_MB_(69.56%) import java.util.ArrayList; import java.util.Arrays; @@ -12,14 +12,18 @@ public class Solution { public List> groupAnagrams(String[] strs) { - Map> hm = new HashMap<>(); - for (String s : strs) { - char[] ch = s.toCharArray(); - Arrays.sort(ch); - String temp = new String(ch); - hm.computeIfAbsent(temp, k -> new ArrayList<>()); - hm.get(temp).add(s); + Map> anagrams= new HashMap<>(); + for (String word: strs) { + char[] freq = new char[26]; + for (char c : word.toCharArray()) { + freq[c - 'a'] ++; + } + String keyString = new String(freq); + if (!anagrams.containsKey(keyString)) { + anagrams.put(keyString, new ArrayList<>()); + } + anagrams.get(keyString).add(word); } - return (new ArrayList<>(hm.values())); + return new ArrayList<>(anagrams.values()); } } diff --git a/src/main/java/g0001_0100/s0051_n_queens/Solution.java b/src/main/java/g0001_0100/s0051_n_queens/Solution.java index b782e2da6..b095e889a 100644 --- a/src/main/java/g0001_0100/s0051_n_queens/Solution.java +++ b/src/main/java/g0001_0100/s0051_n_queens/Solution.java @@ -1,50 +1,70 @@ package g0001_0100.s0051_n_queens; // #Hard #Top_100_Liked_Questions #Array #Backtracking #Big_O_Time_O(N!)_Space_O(N) -// #2023_08_11_Time_1_ms_(100.00%)_Space_43.6_MB_(97.17%) +// #2024_11_11_Time_1_ms_(99.77%)_Space_44.8_MB_(61.16%) import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class Solution { - public List> solveNQueens(int n) { - boolean[] pos = new boolean[n + 2 * n - 1 + 2 * n - 1]; - int[] pos2 = new int[n]; - List> ans = new ArrayList<>(); - helper(n, 0, pos, pos2, ans); - return ans; + public static List < List < String >> solveNQueens(int n) { + char[][] board = new char[n][n]; + for (int i = 0; i < n; i++) + for (int j = 0; j < n; j++) + board[i][j] = '.'; + List < List < String >> res = new ArrayList < List < String >> (); + int leftRow[] = new int[n]; + int upperDiagonal[] = new int[2 * n - 1]; + int lowerDiagonal[] = new int[2 * n - 1]; + solve(0, board, res, leftRow, lowerDiagonal, upperDiagonal); + return res; } - private void helper(int n, int row, boolean[] pos, int[] pos2, List> ans) { - if (row == n) { - construct(n, pos2, ans); + + + static void solve(int col, char[][] board, List < List < String >> res, int leftRow[], int lowerDiagonal[], int upperDiagonal[]) { + if (col == board.length) { + res.add(construct(board)); return; } - for (int i = 0; i < n; i++) { - int index = n + 2 * n - 1 + n - 1 + i - row; - if (pos[i] || pos[n + i + row] || pos[index]) { - continue; + + for (int row = 0; row < board.length; row++) { + if (leftRow[row] == 0 && lowerDiagonal[row + col] == 0 && upperDiagonal[board.length - 1 + col - row] == 0) { + board[row][col] = 'Q'; + leftRow[row] = 1; + lowerDiagonal[row + col] = 1; + upperDiagonal[board.length - 1 + col - row] = 1; + solve(col + 1, board, res, leftRow, lowerDiagonal, upperDiagonal); + board[row][col] = '.'; + leftRow[row] = 0; + lowerDiagonal[row + col] = 0; + upperDiagonal[board.length - 1 + col - row] = 0; } - pos[i] = true; - pos[n + i + row] = true; - pos[index] = true; - pos2[row] = i; - helper(n, row + 1, pos, pos2, ans); - pos[i] = false; - pos[n + i + row] = false; - pos[index] = false; } } - private void construct(int n, int[] pos, List> ans) { - List sol = new ArrayList<>(); - for (int r = 0; r < n; r++) { - char[] queenRow = new char[n]; - Arrays.fill(queenRow, '.'); - queenRow[pos[r]] = 'Q'; - sol.add(new String(queenRow)); + + static List < String > construct(char[][] board) { + List < String > res = new LinkedList < String > (); + for (int i = 0; i < board.length; i++) { + String s = new String(board[i]); + res.add(s); } - ans.add(sol); + return res; + } + public static void main(String args[]) { + int N = 4; + List < List < String >> queen = solveNQueens(N); + int i = 1; + for (List < String > it: queen) { + System.out.println("Arrangement " + i); + for (String s: it) { + System.out.println(s); + } + System.out.println(); + i += 1; + } + } } diff --git a/src/main/java/g0001_0100/s0053_maximum_subarray/Solution.java b/src/main/java/g0001_0100/s0053_maximum_subarray/Solution.java index 485aa3cf5..0d00952bf 100644 --- a/src/main/java/g0001_0100/s0053_maximum_subarray/Solution.java +++ b/src/main/java/g0001_0100/s0053_maximum_subarray/Solution.java @@ -3,7 +3,7 @@ // #Medium #Top_100_Liked_Questions #Top_Interview_Questions #Array #Dynamic_Programming // #Divide_and_Conquer #Data_Structure_I_Day_1_Array #Dynamic_Programming_I_Day_5 // #Udemy_Famous_Algorithm #Big_O_Time_O(n)_Space_O(1) -// #2023_08_11_Time_1_ms_(100.00%)_Space_57.7_MB_(90.58%) +// #2024_11_11_Time_1_ms_(99.32%)_Space_56.9_MB_(54.82%) public class Solution { public int maxSubArray(int[] nums) { diff --git a/src/main/java/g0001_0100/s0055_jump_game/Solution.java b/src/main/java/g0001_0100/s0055_jump_game/Solution.java index c56c0a17a..4f9651a12 100644 --- a/src/main/java/g0001_0100/s0055_jump_game/Solution.java +++ b/src/main/java/g0001_0100/s0055_jump_game/Solution.java @@ -2,41 +2,24 @@ // #Medium #Top_100_Liked_Questions #Top_Interview_Questions #Array #Dynamic_Programming #Greedy // #Algorithm_II_Day_12_Dynamic_Programming #Dynamic_Programming_I_Day_4 #Udemy_Arrays -// #Big_O_Time_O(n)_Space_O(1) #2023_08_11_Time_2_ms_(79.47%)_Space_44.8_MB_(22.14%) +// #Big_O_Time_O(n)_Space_O(1) #2024_11_11_Time_1_ms_(100.00%)_Space_45.6_MB_(44.48%) public class Solution { public boolean canJump(int[] nums) { - int sz = nums.length; - // we set 1 so it won't break on the first iteration - int tmp = 1; - for (int i = 0; i < sz; i++) { - // we always deduct tmp for every iteration - tmp--; - if (tmp < 0) { - // if from previous iteration tmp is already 0, it will be <0 here - // leading to false value - return false; - } - // we get the maximum value because this value is supposed - // to be our iterator, if both values are 0, then the next - // iteration we will return false - // if either both or one of them are not 0 then we will keep doing this and check. + if(nums.length == 1){ + return true; + } + + if(nums[0] == 0){ + return false; + } - // We can stop the whole iteration with this condition. without this condition the code - // runs in 2ms 79.6%, adding this condition improves the performance into 1ms 100% - // because if the test case jump value is quite large, instead of just iterate, we can - // just check using this condition - // example: [10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -> we can just jump to the end without - // iterating whole array - tmp = Math.max(tmp, nums[i]); - if (i + tmp >= sz - 1) { - return true; + int fin = nums.length-1; //3 + for(int i=nums.length-2;i>=0;i--){ + if((nums[i]+i) >= fin){ + fin = i; } } - // we can just return true at the end, because if tmp is 0 on previous - // iteration, - // even though the next iteration index is the last one, it will return false under the - // tmp<0 condition - return true; + return fin == 0; } } diff --git a/src/main/java/g0001_0100/s0056_merge_intervals/Solution.java b/src/main/java/g0001_0100/s0056_merge_intervals/Solution.java index 451550860..db0c8a658 100644 --- a/src/main/java/g0001_0100/s0056_merge_intervals/Solution.java +++ b/src/main/java/g0001_0100/s0056_merge_intervals/Solution.java @@ -2,7 +2,7 @@ // #Medium #Top_100_Liked_Questions #Top_Interview_Questions #Array #Sorting // #Data_Structure_II_Day_2_Array #Level_2_Day_17_Interval #Udemy_2D_Arrays/Matrix -// #Big_O_Time_O(n_log_n)_Space_O(n) #2023_08_11_Time_8_ms_(96.27%)_Space_45.2_MB_(90.13%) +// #Big_O_Time_O(n_log_n)_Space_O(n) #2024_11_11_Time_7_ms_(98.37%)_Space_46.8_MB_(11.43%) import java.util.ArrayList; import java.util.Arrays; diff --git a/src/main/java/g0001_0100/s0062_unique_paths/Solution.java b/src/main/java/g0001_0100/s0062_unique_paths/Solution.java index 5d17eabe0..b459ef868 100644 --- a/src/main/java/g0001_0100/s0062_unique_paths/Solution.java +++ b/src/main/java/g0001_0100/s0062_unique_paths/Solution.java @@ -3,7 +3,7 @@ // #Medium #Top_100_Liked_Questions #Top_Interview_Questions #Dynamic_Programming #Math // #Combinatorics #Algorithm_II_Day_13_Dynamic_Programming #Dynamic_Programming_I_Day_15 // #Level_1_Day_11_Dynamic_Programming #Big_O_Time_O(m*n)_Space_O(m*n) -// #2023_08_11_Time_0_ms_(100.00%)_Space_39.2_MB_(67.74%) +// #2024_11_11_Time_0_ms_(100.00%)_Space_40.7_MB_(12.56%) public class Solution { public int uniquePaths(int m, int n) { diff --git a/src/main/java/g0001_0100/s0064_minimum_path_sum/Solution.java b/src/main/java/g0001_0100/s0064_minimum_path_sum/Solution.java index 4d9fc66f0..20367359e 100644 --- a/src/main/java/g0001_0100/s0064_minimum_path_sum/Solution.java +++ b/src/main/java/g0001_0100/s0064_minimum_path_sum/Solution.java @@ -2,7 +2,7 @@ // #Medium #Top_100_Liked_Questions #Array #Dynamic_Programming #Matrix // #Dynamic_Programming_I_Day_16 #Udemy_Dynamic_Programming #Big_O_Time_O(m*n)_Space_O(m*n) -// #2023_08_11_Time_0_ms_(100.00%)_Space_44_MB_(58.56%) +// #2024_11_11_Time_1_ms_(99.73%)_Space_47.5_MB_(44.29%) public class Solution { public int minPathSum(int[][] grid) { diff --git a/src/main/java/g0001_0100/s0070_climbing_stairs/Solution.java b/src/main/java/g0001_0100/s0070_climbing_stairs/Solution.java index ae3115191..1192ff98c 100644 --- a/src/main/java/g0001_0100/s0070_climbing_stairs/Solution.java +++ b/src/main/java/g0001_0100/s0070_climbing_stairs/Solution.java @@ -3,7 +3,7 @@ // #Easy #Top_100_Liked_Questions #Top_Interview_Questions #Dynamic_Programming #Math #Memoization // #Algorithm_I_Day_12_Dynamic_Programming #Dynamic_Programming_I_Day_2 // #Level_1_Day_10_Dynamic_Programming #Udemy_Dynamic_Programming #Big_O_Time_O(n)_Space_O(n) -// #2023_08_11_Time_0_ms_(100.00%)_Space_39.2_MB_(71.51%) +// #2024_11_11_Time_0_ms_(100.00%)_Space_40.3_MB_(41.06%) public class Solution { public int climbStairs(int n) { diff --git a/src/main/java/g0001_0100/s0072_edit_distance/Solution.java b/src/main/java/g0001_0100/s0072_edit_distance/Solution.java index 21da9da7b..0ad81ba0d 100644 --- a/src/main/java/g0001_0100/s0072_edit_distance/Solution.java +++ b/src/main/java/g0001_0100/s0072_edit_distance/Solution.java @@ -3,7 +3,7 @@ // #Medium #Top_100_Liked_Questions #String #Dynamic_Programming // #Algorithm_II_Day_18_Dynamic_Programming #Dynamic_Programming_I_Day_19 // #Udemy_Dynamic_Programming #Big_O_Time_O(n^2)_Space_O(n2) -// #2023_08_11_Time_4_ms_(90.13%)_Space_41.8_MB_(99.78%) +// #2024_11_11_Time_3_ms_(97.19%)_Space_43.2_MB_(98.23%) @SuppressWarnings("java:S2234") public class Solution { diff --git a/src/main/java/g0001_0100/s0073_set_matrix_zeroes/Solution.java b/src/main/java/g0001_0100/s0073_set_matrix_zeroes/Solution.java index 3860b031d..e9ab1a616 100644 --- a/src/main/java/g0001_0100/s0073_set_matrix_zeroes/Solution.java +++ b/src/main/java/g0001_0100/s0073_set_matrix_zeroes/Solution.java @@ -2,7 +2,7 @@ // #Medium #Top_100_Liked_Questions #Top_Interview_Questions #Array #Hash_Table #Matrix // #Udemy_2D_Arrays/Matrix #Big_O_Time_O(m*n)_Space_O(1) -// #2023_08_11_Time_1_ms_(79.07%)_Space_44.4_MB_(94.19%) +// #2024_11_11_Time_0_ms_(100.00%)_Space_45.6_MB_(50.86%) public class Solution { // Approach: Use first row and first column for storing whether in future diff --git a/src/main/java/g0001_0100/s0074_search_a_2d_matrix/Solution.java b/src/main/java/g0001_0100/s0074_search_a_2d_matrix/Solution.java index 4378f55f2..34f5c46e2 100644 --- a/src/main/java/g0001_0100/s0074_search_a_2d_matrix/Solution.java +++ b/src/main/java/g0001_0100/s0074_search_a_2d_matrix/Solution.java @@ -3,7 +3,7 @@ // #Medium #Top_100_Liked_Questions #Array #Binary_Search #Matrix #Data_Structure_I_Day_5_Array // #Algorithm_II_Day_1_Binary_Search #Binary_Search_I_Day_8 #Level_2_Day_8_Binary_Search // #Udemy_2D_Arrays/Matrix #Big_O_Time_O(endRow+endCol)_Space_O(1) -// #2023_08_11_Time_0_ms_(100.00%)_Space_40.9_MB_(71.91%) +// #2024_11_11_Time_0_ms_(100.00%)_Space_42.2_MB_(40.02%) public class Solution { public boolean searchMatrix(int[][] matrix, int target) { diff --git a/src/main/java/g0001_0100/s0075_sort_colors/Solution.java b/src/main/java/g0001_0100/s0075_sort_colors/Solution.java index 53272c181..d11998782 100644 --- a/src/main/java/g0001_0100/s0075_sort_colors/Solution.java +++ b/src/main/java/g0001_0100/s0075_sort_colors/Solution.java @@ -2,7 +2,7 @@ // #Medium #Top_100_Liked_Questions #Top_Interview_Questions #Array #Sorting #Two_Pointers // #Data_Structure_II_Day_2_Array #Udemy_Arrays #Big_O_Time_O(n)_Space_O(1) -// #2023_08_11_Time_0_ms_(100.00%)_Space_41_MB_(50.59%) +// #2024_11_11_Time_0_ms_(100.00%)_Space_41.5_MB_(91.22%) public class Solution { public void sortColors(int[] nums) { diff --git a/src/main/java/g0001_0100/s0076_minimum_window_substring/Solution.java b/src/main/java/g0001_0100/s0076_minimum_window_substring/Solution.java index cc9db5e6e..837aac662 100644 --- a/src/main/java/g0001_0100/s0076_minimum_window_substring/Solution.java +++ b/src/main/java/g0001_0100/s0076_minimum_window_substring/Solution.java @@ -2,7 +2,7 @@ // #Hard #Top_100_Liked_Questions #Top_Interview_Questions #String #Hash_Table #Sliding_Window // #Level_2_Day_14_Sliding_Window/Two_Pointer #Big_O_Time_O(s.length())_Space_O(1) -// #2023_08_11_Time_2_ms_(99.94%)_Space_43.6_MB_(93.87%) +// #2024_11_11_Time_2_ms_(99.83%)_Space_44.5_MB_(89.46%) public class Solution { public String minWindow(String s, String t) { diff --git a/src/main/java/g0001_0100/s0078_subsets/Solution.java b/src/main/java/g0001_0100/s0078_subsets/Solution.java index 329dc1965..4cc1f469f 100644 --- a/src/main/java/g0001_0100/s0078_subsets/Solution.java +++ b/src/main/java/g0001_0100/s0078_subsets/Solution.java @@ -2,7 +2,7 @@ // #Medium #Top_100_Liked_Questions #Top_Interview_Questions #Array #Bit_Manipulation #Backtracking // #Algorithm_II_Day_9_Recursion_Backtracking #Udemy_Backtracking/Recursion -// #Big_O_Time_O(2^n)_Space_O(n*2^n) #2023_08_11_Time_1_ms_(70.60%)_Space_41.8_MB_(71.73%) +// #Big_O_Time_O(2^n)_Space_O(n*2^n) #2024_11_11_Time_0_ms_(100.00%)_Space_43_MB_(12.48%) import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/g0001_0100/s0079_word_search/Solution.java b/src/main/java/g0001_0100/s0079_word_search/Solution.java index d055a50b7..49533c2db 100644 --- a/src/main/java/g0001_0100/s0079_word_search/Solution.java +++ b/src/main/java/g0001_0100/s0079_word_search/Solution.java @@ -2,43 +2,57 @@ // #Medium #Top_100_Liked_Questions #Top_Interview_Questions #Array #Matrix #Backtracking // #Algorithm_II_Day_11_Recursion_Backtracking #Big_O_Time_O(4^(m*n))_Space_O(m*n) -// #2023_08_11_Time_157_ms_(78.97%)_Space_40.5_MB_(84.41%) +// #2024_11_11_Time_64_ms_(98.51%)_Space_41.6_MB_(51.63%) public class Solution { - private boolean backtrace( - char[][] board, boolean[][] visited, String word, int index, int x, int y) { - if (index == word.length()) { - return true; - } - if (x < 0 || x >= board.length || y < 0 || y >= board[0].length || visited[x][y]) { - return false; - } - visited[x][y] = true; - if (word.charAt(index) == board[x][y]) { - boolean res = - backtrace(board, visited, word, index + 1, x, y + 1) - || backtrace(board, visited, word, index + 1, x, y - 1) - || backtrace(board, visited, word, index + 1, x + 1, y) - || backtrace(board, visited, word, index + 1, x - 1, y); - if (!res) { - visited[x][y] = false; + public boolean exists = false; + public boolean exist(char[][] board, String word) { + for (int i = 0; i < board.length; i++) { + for (int j = 0; j < board[0].length; j++) { + if (board[i][j] == word.charAt(0)) { + dfs(board, word, 1, i, j); + } } - return res; - } else { - visited[x][y] = false; - return false; } + + return exists; } - public boolean exist(char[][] board, String word) { - boolean[][] visited = new boolean[board.length][board[0].length]; - for (int i = 0; i < board.length; ++i) { - for (int j = 0; j < board[0].length; ++j) { - if (backtrace(board, visited, word, 0, i, j)) { - return true; - } - } + private void dfs(char[][] board, String word, int wordIndex, int i, int j) { + if (wordIndex == word.length()) { + exists = true; + return; + } + + char currentChar = board[i][j]; + char nextChar = word.charAt(wordIndex); + + if (i > 0 && board[i - 1][j] == nextChar) { + // go up + board[i][j] = '-'; + dfs(board, word, wordIndex + 1, i - 1, j); + board[i][j] = currentChar; + } + + if (j > 0 && board[i][j - 1] == nextChar) { + // go left + board[i][j] = '-'; + dfs(board, word, wordIndex + 1, i, j - 1); + board[i][j] = currentChar; + } + + if (i < board.length - 1 && board[i + 1][j] == nextChar) { + // go down + board[i][j] = '-'; + dfs(board, word, wordIndex + 1, i + 1, j); + board[i][j] = currentChar; + } + + if (j < board[0].length - 1 && board[i][j + 1] == nextChar) { + // go right + board[i][j] = '-'; + dfs(board, word, wordIndex + 1, i, j + 1); + board[i][j] = currentChar; } - return false; } } From 6b6ad14cd9063d2fc9d9e1213250822978e9d095 Mon Sep 17 00:00:00 2001 From: ThanhNIT Date: Mon, 11 Nov 2024 21:58:18 +0700 Subject: [PATCH 2/8] format --- .../s0049_group_anagrams/Solution.java | 7 ++-- .../g0001_0100/s0051_n_queens/Solution.java | 42 +++++++------------ .../g0001_0100/s0055_jump_game/Solution.java | 12 +++--- .../s0079_word_search/Solution.java | 7 +--- 4 files changed, 24 insertions(+), 44 deletions(-) diff --git a/src/main/java/g0001_0100/s0049_group_anagrams/Solution.java b/src/main/java/g0001_0100/s0049_group_anagrams/Solution.java index d79407ec0..8c36d26ed 100644 --- a/src/main/java/g0001_0100/s0049_group_anagrams/Solution.java +++ b/src/main/java/g0001_0100/s0049_group_anagrams/Solution.java @@ -5,18 +5,17 @@ // #Big_O_Time_O(n*k_log_k)_Space_O(n) #2024_11_11_Time_6_ms_(97.61%)_Space_47.7_MB_(69.56%) import java.util.ArrayList; -import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; public class Solution { public List> groupAnagrams(String[] strs) { - Map> anagrams= new HashMap<>(); - for (String word: strs) { + Map> anagrams = new HashMap<>(); + for (String word : strs) { char[] freq = new char[26]; for (char c : word.toCharArray()) { - freq[c - 'a'] ++; + freq[c - 'a']++; } String keyString = new String(freq); if (!anagrams.containsKey(keyString)) { diff --git a/src/main/java/g0001_0100/s0051_n_queens/Solution.java b/src/main/java/g0001_0100/s0051_n_queens/Solution.java index b095e889a..fd315bb33 100644 --- a/src/main/java/g0001_0100/s0051_n_queens/Solution.java +++ b/src/main/java/g0001_0100/s0051_n_queens/Solution.java @@ -4,16 +4,13 @@ // #2024_11_11_Time_1_ms_(99.77%)_Space_44.8_MB_(61.16%) import java.util.ArrayList; -import java.util.Arrays; import java.util.List; public class Solution { - public static List < List < String >> solveNQueens(int n) { + public static List> solveNQueens(int n) { char[][] board = new char[n][n]; - for (int i = 0; i < n; i++) - for (int j = 0; j < n; j++) - board[i][j] = '.'; - List < List < String >> res = new ArrayList < List < String >> (); + for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) board[i][j] = '.'; + List> res = new ArrayList>(); int leftRow[] = new int[n]; int upperDiagonal[] = new int[2 * n - 1]; int lowerDiagonal[] = new int[2 * n - 1]; @@ -21,16 +18,22 @@ public static List < List < String >> solveNQueens(int n) { return res; } - - - static void solve(int col, char[][] board, List < List < String >> res, int leftRow[], int lowerDiagonal[], int upperDiagonal[]) { + void solve( + int col, + char[][] board, + List> res, + int leftRow[], + int lowerDiagonal[], + int upperDiagonal[]) { if (col == board.length) { res.add(construct(board)); return; } for (int row = 0; row < board.length; row++) { - if (leftRow[row] == 0 && lowerDiagonal[row + col] == 0 && upperDiagonal[board.length - 1 + col - row] == 0) { + if (leftRow[row] == 0 + && lowerDiagonal[row + col] == 0 + && upperDiagonal[board.length - 1 + col - row] == 0) { board[row][col] = 'Q'; leftRow[row] = 1; lowerDiagonal[row + col] = 1; @@ -44,27 +47,12 @@ static void solve(int col, char[][] board, List < List < String >> res, int left } } - - static List < String > construct(char[][] board) { - List < String > res = new LinkedList < String > (); + List construct(char[][] board) { + List res = new LinkedList(); for (int i = 0; i < board.length; i++) { String s = new String(board[i]); res.add(s); } return res; } - public static void main(String args[]) { - int N = 4; - List < List < String >> queen = solveNQueens(N); - int i = 1; - for (List < String > it: queen) { - System.out.println("Arrangement " + i); - for (String s: it) { - System.out.println(s); - } - System.out.println(); - i += 1; - } - - } } diff --git a/src/main/java/g0001_0100/s0055_jump_game/Solution.java b/src/main/java/g0001_0100/s0055_jump_game/Solution.java index 4f9651a12..783549dbf 100644 --- a/src/main/java/g0001_0100/s0055_jump_game/Solution.java +++ b/src/main/java/g0001_0100/s0055_jump_game/Solution.java @@ -6,17 +6,15 @@ public class Solution { public boolean canJump(int[] nums) { - if(nums.length == 1){ + if (nums.length == 1) { return true; } - - if(nums[0] == 0){ + if (nums[0] == 0) { return false; } - - int fin = nums.length-1; //3 - for(int i=nums.length-2;i>=0;i--){ - if((nums[i]+i) >= fin){ + int fin = nums.length - 1; // 3 + for (int i = nums.length - 2; i >= 0; i--) { + if ((nums[i] + i) >= fin) { fin = i; } } diff --git a/src/main/java/g0001_0100/s0079_word_search/Solution.java b/src/main/java/g0001_0100/s0079_word_search/Solution.java index 49533c2db..d5cf9edbd 100644 --- a/src/main/java/g0001_0100/s0079_word_search/Solution.java +++ b/src/main/java/g0001_0100/s0079_word_search/Solution.java @@ -6,6 +6,7 @@ public class Solution { public boolean exists = false; + public boolean exist(char[][] board, String word) { for (int i = 0; i < board.length; i++) { for (int j = 0; j < board[0].length; j++) { @@ -14,7 +15,6 @@ public boolean exist(char[][] board, String word) { } } } - return exists; } @@ -23,31 +23,26 @@ private void dfs(char[][] board, String word, int wordIndex, int i, int j) { exists = true; return; } - char currentChar = board[i][j]; char nextChar = word.charAt(wordIndex); - if (i > 0 && board[i - 1][j] == nextChar) { // go up board[i][j] = '-'; dfs(board, word, wordIndex + 1, i - 1, j); board[i][j] = currentChar; } - if (j > 0 && board[i][j - 1] == nextChar) { // go left board[i][j] = '-'; dfs(board, word, wordIndex + 1, i, j - 1); board[i][j] = currentChar; } - if (i < board.length - 1 && board[i + 1][j] == nextChar) { // go down board[i][j] = '-'; dfs(board, word, wordIndex + 1, i + 1, j); board[i][j] = currentChar; } - if (j < board[0].length - 1 && board[i][j + 1] == nextChar) { // go right board[i][j] = '-'; From 3785e1af80a24163ebb589e19c182e545429b384 Mon Sep 17 00:00:00 2001 From: ThanhNIT Date: Mon, 11 Nov 2024 21:58:44 +0700 Subject: [PATCH 3/8] Update README.md --- README.md | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 35409e3bf..853b3f417 100644 --- a/README.md +++ b/README.md @@ -64,7 +64,7 @@ implementation 'com.github.javadev:leetcode-in-java:1.37' | | | | | | |-|-|-|-|-|- | 0075 |[Sort Colors](src/main/java/g0001_0100/s0075_sort_colors/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Two_Pointers, Big_O_Time_O(n)_Space_O(1) | 0 | 100.00 -| 0056 |[Merge Intervals](src/main/java/g0001_0100/s0056_merge_intervals/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Big_O_Time_O(n_log_n)_Space_O(n) | 8 | 96.27 +| 0056 |[Merge Intervals](src/main/java/g0001_0100/s0056_merge_intervals/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Big_O_Time_O(n_log_n)_Space_O(n) | 7 | 98.37 | 0706 |[Design HashMap](src/main/java/g0701_0800/s0706_design_hashmap/MyHashMap.java)| Easy | Array, Hash_Table, Design, Linked_List, Hash_Function | 13 | 95.71 #### Day 3 Array @@ -108,7 +108,7 @@ implementation 'com.github.javadev:leetcode-in-java:1.37' | | | | | | |-|-|-|-|-|- -| 0049 |[Group Anagrams](src/main/java/g0001_0100/s0049_group_anagrams/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, String, Hash_Table, Sorting, Big_O_Time_O(n\*k_log_k)_Space_O(n) | 6 | 92.28 +| 0049 |[Group Anagrams](src/main/java/g0001_0100/s0049_group_anagrams/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, String, Hash_Table, Sorting, Big_O_Time_O(n\*k_log_k)_Space_O(n) | 6 | 97.61 | 0043 |[Multiply Strings](src/main/java/g0001_0100/s0043_multiply_strings/Solution.java)| Medium | String, Math, Simulation | 1 | 100.00 #### Day 9 String @@ -375,7 +375,7 @@ implementation 'com.github.javadev:leetcode-in-java:1.37' | | | | | | |-|-|-|-|-|- -| 0078 |[Subsets](src/main/java/g0001_0100/s0078_subsets/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Bit_Manipulation, Backtracking, Big_O_Time_O(2^n)_Space_O(n\*2^n) | 1 | 70.60 +| 0078 |[Subsets](src/main/java/g0001_0100/s0078_subsets/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Bit_Manipulation, Backtracking, Big_O_Time_O(2^n)_Space_O(n\*2^n) | 0 | 100.00 | 0090 |[Subsets II](src/main/java/g0001_0100/s0090_subsets_ii/Solution.java)| Medium | Array, Bit_Manipulation, Backtracking | 2 | 82.94 #### Day 10 Recursion Backtracking @@ -392,14 +392,14 @@ implementation 'com.github.javadev:leetcode-in-java:1.37' |-|-|-|-|-|- | 0017 |[Letter Combinations of a Phone Number](src/main/java/g0001_0100/s0017_letter_combinations_of_a_phone_number/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Backtracking, Big_O_Time_O(4^n)_Space_O(n) | 0 | 100.00 | 0022 |[Generate Parentheses](src/main/java/g0001_0100/s0022_generate_parentheses/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Dynamic_Programming, Backtracking, Big_O_Time_O(2^n)_Space_O(n) | 0 | 100.00 -| 0079 |[Word Search](src/main/java/g0001_0100/s0079_word_search/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Matrix, Backtracking, Big_O_Time_O(4^(m\*n))_Space_O(m\*n) | 157 | 78.97 +| 0079 |[Word Search](src/main/java/g0001_0100/s0079_word_search/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Matrix, Backtracking, Big_O_Time_O(4^(m\*n))_Space_O(m\*n) | 64 | 98.51 #### Day 12 Dynamic Programming | | | | | | |-|-|-|-|-|- | 0213 |[House Robber II](src/main/java/g0201_0300/s0213_house_robber_ii/Solution.java)| Medium | Array, Dynamic_Programming | 0 | 100.00 -| 0055 |[Jump Game](src/main/java/g0001_0100/s0055_jump_game/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Greedy, Big_O_Time_O(n)_Space_O(1) | 2 | 79.47 +| 0055 |[Jump Game](src/main/java/g0001_0100/s0055_jump_game/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Greedy, Big_O_Time_O(n)_Space_O(1) | 1 | 100.00 #### Day 13 Dynamic Programming @@ -440,7 +440,7 @@ implementation 'com.github.javadev:leetcode-in-java:1.37' | | | | | | |-|-|-|-|-|- -| 0072 |[Edit Distance](src/main/java/g0001_0100/s0072_edit_distance/Solution.java)| Medium | Top_100_Liked_Questions, String, Dynamic_Programming, Big_O_Time_O(n^2)_Space_O(n2) | 4 | 90.13 +| 0072 |[Edit Distance](src/main/java/g0001_0100/s0072_edit_distance/Solution.java)| Medium | Top_100_Liked_Questions, String, Dynamic_Programming, Big_O_Time_O(n^2)_Space_O(n2) | 3 | 97.19 | 0322 |[Coin Change](src/main/java/g0301_0400/s0322_coin_change/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Breadth_First_Search, Big_O_Time_O(m\*n)_Space_O(amount) | 17 | 91.77 | 0343 |[Integer Break](src/main/java/g0301_0400/s0343_integer_break/Solution.java)| Medium | Dynamic_Programming, Math | 0 | 100.00 @@ -718,14 +718,14 @@ implementation 'com.github.javadev:leetcode-in-java:1.37' | | | | | | |-|-|-|-|-|- -| 0055 |[Jump Game](src/main/java/g0001_0100/s0055_jump_game/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Greedy, Big_O_Time_O(n)_Space_O(1) | 2 | 79.47 +| 0055 |[Jump Game](src/main/java/g0001_0100/s0055_jump_game/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Greedy, Big_O_Time_O(n)_Space_O(1) | 1 | 100.00 | 0045 |[Jump Game II](src/main/java/g0001_0100/s0045_jump_game_ii/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Greedy, Big_O_Time_O(n)_Space_O(1) | 0 | 100.00 #### Day 5 | | | | | | |-|-|-|-|-|- -| 0053 |[Maximum Subarray](src/main/java/g0001_0100/s0053_maximum_subarray/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Divide_and_Conquer, Big_O_Time_O(n)_Space_O(1) | 1 | 100.00 +| 0053 |[Maximum Subarray](src/main/java/g0001_0100/s0053_maximum_subarray/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Divide_and_Conquer, Big_O_Time_O(n)_Space_O(1) | 1 | 99.32 | 0918 |[Maximum Sum Circular Subarray](src/main/java/g0901_1000/s0918_maximum_sum_circular_subarray/Solution.java)| Medium | Array, Dynamic_Programming, Divide_and_Conquer, Queue, Monotonic_Queue | 3 | 92.86 #### Day 6 @@ -803,7 +803,7 @@ implementation 'com.github.javadev:leetcode-in-java:1.37' | | | | | | |-|-|-|-|-|- -| 0064 |[Minimum Path Sum](src/main/java/g0001_0100/s0064_minimum_path_sum/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Matrix, Big_O_Time_O(m\*n)_Space_O(m\*n) | 0 | 100.00 +| 0064 |[Minimum Path Sum](src/main/java/g0001_0100/s0064_minimum_path_sum/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Matrix, Big_O_Time_O(m\*n)_Space_O(m\*n) | 1 | 99.73 | 0221 |[Maximal Square](src/main/java/g0201_0300/s0221_maximal_square/Solution.java)| Medium | Array, Dynamic_Programming, Matrix, Big_O_Time_O(m\*n)_Space_O(m\*n) | 7 | 72.35 #### Day 17 @@ -826,7 +826,7 @@ implementation 'com.github.javadev:leetcode-in-java:1.37' |-|-|-|-|-|- | 0392 |[Is Subsequence](src/main/java/g0301_0400/s0392_is_subsequence/Solution.java)| Easy | String, Dynamic_Programming, Two_Pointers | 1 | 93.01 | 1143 |[Longest Common Subsequence](src/main/java/g1101_1200/s1143_longest_common_subsequence/Solution.java)| Medium | Top_100_Liked_Questions, String, Dynamic_Programming, Big_O_Time_O(n\*m)_Space_O(n\*m) | 33 | 46.23 -| 0072 |[Edit Distance](src/main/java/g0001_0100/s0072_edit_distance/Solution.java)| Medium | Top_100_Liked_Questions, String, Dynamic_Programming, Big_O_Time_O(n^2)_Space_O(n2) | 4 | 90.13 +| 0072 |[Edit Distance](src/main/java/g0001_0100/s0072_edit_distance/Solution.java)| Medium | Top_100_Liked_Questions, String, Dynamic_Programming, Big_O_Time_O(n^2)_Space_O(n2) | 3 | 97.19 #### Day 20 @@ -1016,7 +1016,7 @@ implementation 'com.github.javadev:leetcode-in-java:1.37' | | | | | | |-|-|-|-|-|- | 1376 |[Time Needed to Inform All Employees](src/main/java/g1301_1400/s1376_time_needed_to_inform_all_employees/Solution.java)| Medium | Depth_First_Search, Breadth_First_Search, Tree | 8 | 99.85 -| 0049 |[Group Anagrams](src/main/java/g0001_0100/s0049_group_anagrams/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, String, Hash_Table, Sorting, Big_O_Time_O(n\*k_log_k)_Space_O(n) | 6 | 92.28 +| 0049 |[Group Anagrams](src/main/java/g0001_0100/s0049_group_anagrams/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, String, Hash_Table, Sorting, Big_O_Time_O(n\*k_log_k)_Space_O(n) | 6 | 97.61 #### Day 12 @@ -1479,7 +1479,7 @@ implementation 'com.github.javadev:leetcode-in-java:1.37' |-|-|-|-|-|- | 0003 |[Longest Substring Without Repeating Characters](src/main/java/g0001_0100/s0003_longest_substring_without_repeating_characters/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Sliding_Window, Big_O_Time_O(n)_Space_O(1), AI_can_be_used_to_solve_the_task | 2 | 98.59 | 0016 |[3Sum Closest](src/main/java/g0001_0100/s0016_3sum_closest/Solution.java)| Medium | Array, Sorting, Two_Pointers | 4 | 98.21 -| 0076 |[Minimum Window Substring](src/main/java/g0001_0100/s0076_minimum_window_substring/Solution.java)| Hard | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Sliding_Window, Big_O_Time_O(s.length())_Space_O(1) | 2 | 99.94 +| 0076 |[Minimum Window Substring](src/main/java/g0001_0100/s0076_minimum_window_substring/Solution.java)| Hard | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Sliding_Window, Big_O_Time_O(s.length())_Space_O(1) | 2 | 99.83 #### Day 15 Tree @@ -1502,7 +1502,7 @@ implementation 'com.github.javadev:leetcode-in-java:1.37' | | | | | | |-|-|-|-|-|- | 0057 |[Insert Interval](src/main/java/g0001_0100/s0057_insert_interval/Solution.java)| Medium | Array | 0 | 100.00 -| 0056 |[Merge Intervals](src/main/java/g0001_0100/s0056_merge_intervals/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Big_O_Time_O(n_log_n)_Space_O(n) | 8 | 96.27 +| 0056 |[Merge Intervals](src/main/java/g0001_0100/s0056_merge_intervals/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Big_O_Time_O(n_log_n)_Space_O(n) | 7 | 98.37 #### Day 18 Stack @@ -1550,7 +1550,7 @@ implementation 'com.github.javadev:leetcode-in-java:1.37' | 0005 |[Longest Palindromic Substring](src/main/java/g0001_0100/s0005_longest_palindromic_substring/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Dynamic_Programming, Big_O_Time_O(n)_Space_O(n) | 7 | 97.82 | 0394 |[Decode String](src/main/java/g0301_0400/s0394_decode_string/Solution.java)| Medium | Top_100_Liked_Questions, String, Stack, Recursion, Big_O_Time_O(n)_Space_O(n) | 1 | 87.68 | 0242 |[Valid Anagram](src/main/java/g0201_0300/s0242_valid_anagram/Solution.java)| Easy | String, Hash_Table, Sorting | 2 | 99.01 -| 0049 |[Group Anagrams](src/main/java/g0001_0100/s0049_group_anagrams/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, String, Hash_Table, Sorting, Big_O_Time_O(n\*k_log_k)_Space_O(n) | 6 | 92.28 +| 0049 |[Group Anagrams](src/main/java/g0001_0100/s0049_group_anagrams/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, String, Hash_Table, Sorting, Big_O_Time_O(n\*k_log_k)_Space_O(n) | 6 | 97.61 | 0151 |[Reverse Words in a String](src/main/java/g0101_0200/s0151_reverse_words_in_a_string/Solution.java)| Medium | String, Two_Pointers | 2 | 99.94 | 0273 |[Integer to English Words](src/main/java/g0201_0300/s0273_integer_to_english_words/Solution.java)| Hard | String, Math, Recursion | 3 | 95.67 @@ -1575,7 +1575,7 @@ implementation 'com.github.javadev:leetcode-in-java:1.37' | 0122 |[Best Time to Buy and Sell Stock II](src/main/java/g0101_0200/s0122_best_time_to_buy_and_sell_stock_ii/Solution.java)| Medium | Top_Interview_Questions, Array, Dynamic_Programming, Greedy | 1 | 96.82 | 0080 |[Remove Duplicates from Sorted Array II](src/main/java/g0001_0100/s0080_remove_duplicates_from_sorted_array_ii/Solution.java)| Medium | Array, Two_Pointers | 0 | 100.00 | 0189 |[Rotate Array](src/main/java/g0101_0200/s0189_rotate_array/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Math, Two_Pointers, Big_O_Time_O(n)_Space_O(1) | 0 | 100.00 -| 0055 |[Jump Game](src/main/java/g0001_0100/s0055_jump_game/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Greedy, Big_O_Time_O(n)_Space_O(1) | 2 | 79.47 +| 0055 |[Jump Game](src/main/java/g0001_0100/s0055_jump_game/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Greedy, Big_O_Time_O(n)_Space_O(1) | 1 | 100.00 | 0075 |[Sort Colors](src/main/java/g0001_0100/s0075_sort_colors/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Two_Pointers, Big_O_Time_O(n)_Space_O(1) | 0 | 100.00 | 0066 |[Plus One](src/main/java/g0001_0100/s0066_plus_one/Solution.java)| Easy | Top_Interview_Questions, Array, Math | 0 | 100.00 | 0238 |[Product of Array Except Self](src/main/java/g0201_0300/s0238_product_of_array_except_self/Solution.java)| Medium | Top_100_Liked_Questions, Array, Prefix_Sum, Big_O_Time_O(n^2)_Space_O(n) | 1 | 100.00 @@ -1606,7 +1606,7 @@ implementation 'com.github.javadev:leetcode-in-java:1.37' | | | | | | |-|-|-|-|-|- -| 0053 |[Maximum Subarray](src/main/java/g0001_0100/s0053_maximum_subarray/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Divide_and_Conquer, Big_O_Time_O(n)_Space_O(1) | 1 | 100.00 +| 0053 |[Maximum Subarray](src/main/java/g0001_0100/s0053_maximum_subarray/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Divide_and_Conquer, Big_O_Time_O(n)_Space_O(1) | 1 | 99.32 | 0169 |[Majority Element](src/main/java/g0101_0200/s0169_majority_element/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Hash_Table, Sorting, Counting, Divide_and_Conquer, Big_O_Time_O(n)_Space_O(1) | 1 | 100.00 #### Udemy Sorting Algorithms @@ -1624,8 +1624,8 @@ implementation 'com.github.javadev:leetcode-in-java:1.37' | 0054 |[Spiral Matrix](src/main/java/g0001_0100/s0054_spiral_matrix/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Matrix, Simulation | 0 | 100.00 | 0048 |[Rotate Image](src/main/java/g0001_0100/s0048_rotate_image/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Math, Matrix, Big_O_Time_O(n^2)_Space_O(1) | 0 | 100.00 | 1572 |[Matrix Diagonal Sum](src/main/java/g1501_1600/s1572_matrix_diagonal_sum/Solution.java)| Easy | Array, Matrix | 0 | 100.00 -| 0073 |[Set Matrix Zeroes](src/main/java/g0001_0100/s0073_set_matrix_zeroes/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Hash_Table, Matrix, Big_O_Time_O(m\*n)_Space_O(1) | 1 | 79.07 -| 0056 |[Merge Intervals](src/main/java/g0001_0100/s0056_merge_intervals/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Big_O_Time_O(n_log_n)_Space_O(n) | 8 | 96.27 +| 0073 |[Set Matrix Zeroes](src/main/java/g0001_0100/s0073_set_matrix_zeroes/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Hash_Table, Matrix, Big_O_Time_O(m\*n)_Space_O(1) | 0 | 100.00 +| 0056 |[Merge Intervals](src/main/java/g0001_0100/s0056_merge_intervals/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Big_O_Time_O(n_log_n)_Space_O(n) | 7 | 98.37 #### Udemy Linked List @@ -1702,10 +1702,10 @@ implementation 'com.github.javadev:leetcode-in-java:1.37' | 0213 |[House Robber II](src/main/java/g0201_0300/s0213_house_robber_ii/Solution.java)| Medium | Array, Dynamic_Programming | 0 | 100.00 | 0509 |[Fibonacci Number](src/main/java/g0501_0600/s0509_fibonacci_number/Solution.java)| Easy | Dynamic_Programming, Math, Recursion, Memoization | 0 | 100.00 | 0070 |[Climbing Stairs](src/main/java/g0001_0100/s0070_climbing_stairs/Solution.java)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Dynamic_Programming, Math, Memoization, Big_O_Time_O(n)_Space_O(n) | 0 | 100.00 -| 0064 |[Minimum Path Sum](src/main/java/g0001_0100/s0064_minimum_path_sum/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Matrix, Big_O_Time_O(m\*n)_Space_O(m\*n) | 0 | 100.00 +| 0064 |[Minimum Path Sum](src/main/java/g0001_0100/s0064_minimum_path_sum/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Matrix, Big_O_Time_O(m\*n)_Space_O(m\*n) | 1 | 99.73 | 0300 |[Longest Increasing Subsequence](src/main/java/g0201_0300/s0300_longest_increasing_subsequence/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Binary_Search, Big_O_Time_O(n\*log_n)_Space_O(n) | 3 | 98.63 | 1143 |[Longest Common Subsequence](src/main/java/g1101_1200/s1143_longest_common_subsequence/Solution.java)| Medium | Top_100_Liked_Questions, String, Dynamic_Programming, Big_O_Time_O(n\*m)_Space_O(n\*m) | 33 | 46.23 -| 0072 |[Edit Distance](src/main/java/g0001_0100/s0072_edit_distance/Solution.java)| Medium | Top_100_Liked_Questions, String, Dynamic_Programming, Big_O_Time_O(n^2)_Space_O(n2) | 4 | 90.13 +| 0072 |[Edit Distance](src/main/java/g0001_0100/s0072_edit_distance/Solution.java)| Medium | Top_100_Liked_Questions, String, Dynamic_Programming, Big_O_Time_O(n^2)_Space_O(n2) | 3 | 97.19 | 0044 |[Wildcard Matching](src/main/java/g0001_0100/s0044_wildcard_matching/Solution.java)| Hard | Top_Interview_Questions, String, Dynamic_Programming, Greedy, Recursion | 2 | 99.87 | 0010 |[Regular Expression Matching](src/main/java/g0001_0100/s0010_regular_expression_matching/Solution.java)| Hard | Top_Interview_Questions, String, Dynamic_Programming, Recursion, Big_O_Time_O(m\*n)_Space_O(m\*n) | 1 | 100.00 @@ -1716,7 +1716,7 @@ implementation 'com.github.javadev:leetcode-in-java:1.37' | 0022 |[Generate Parentheses](src/main/java/g0001_0100/s0022_generate_parentheses/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Dynamic_Programming, Backtracking, Big_O_Time_O(2^n)_Space_O(n) | 0 | 100.00 | 0039 |[Combination Sum](src/main/java/g0001_0100/s0039_combination_sum/Solution.java)| Medium | Top_100_Liked_Questions, Array, Backtracking, Big_O_Time_O(2^n)_Space_O(n+2^n) | 1 | 99.99 | 0216 |[Combination Sum III](src/main/java/g0201_0300/s0216_combination_sum_iii/Solution.java)| Medium | Array, Backtracking | 1 | 81.35 -| 0078 |[Subsets](src/main/java/g0001_0100/s0078_subsets/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Bit_Manipulation, Backtracking, Big_O_Time_O(2^n)_Space_O(n\*2^n) | 1 | 70.60 +| 0078 |[Subsets](src/main/java/g0001_0100/s0078_subsets/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Bit_Manipulation, Backtracking, Big_O_Time_O(2^n)_Space_O(n\*2^n) | 0 | 100.00 | 0017 |[Letter Combinations of a Phone Number](src/main/java/g0001_0100/s0017_letter_combinations_of_a_phone_number/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Backtracking, Big_O_Time_O(4^n)_Space_O(n) | 0 | 100.00 | 0046 |[Permutations](src/main/java/g0001_0100/s0046_permutations/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Backtracking, Big_O_Time_O(n\*n!)_Space_O(n+n!) | 1 | 94.08 @@ -1746,7 +1746,7 @@ implementation 'com.github.javadev:leetcode-in-java:1.37' | | | | | | |-|-|-|-|-|- | 0217 |[Contains Duplicate](src/main/java/g0201_0300/s0217_contains_duplicate/Solution.java)| Easy | Top_Interview_Questions, Array, Hash_Table, Sorting | 6 | 96.68 -| 0053 |[Maximum Subarray](src/main/java/g0001_0100/s0053_maximum_subarray/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Divide_and_Conquer, Big_O_Time_O(n)_Space_O(1) | 1 | 100.00 +| 0053 |[Maximum Subarray](src/main/java/g0001_0100/s0053_maximum_subarray/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Divide_and_Conquer, Big_O_Time_O(n)_Space_O(1) | 1 | 99.32 #### Day 2 Array From 2a664e9d37f29cfcaea12be1b25fbbab90adc81a Mon Sep 17 00:00:00 2001 From: ThanhNIT Date: Mon, 11 Nov 2024 22:01:51 +0700 Subject: [PATCH 4/8] update --- .../g0001_0100/s0051_n_queens/Solution.java | 21 ++++++++++--------- .../g0001_0100/s0055_jump_game/Solution.java | 2 +- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/main/java/g0001_0100/s0051_n_queens/Solution.java b/src/main/java/g0001_0100/s0051_n_queens/Solution.java index fd315bb33..35bb4c70b 100644 --- a/src/main/java/g0001_0100/s0051_n_queens/Solution.java +++ b/src/main/java/g0001_0100/s0051_n_queens/Solution.java @@ -4,16 +4,17 @@ // #2024_11_11_Time_1_ms_(99.77%)_Space_44.8_MB_(61.16%) import java.util.ArrayList; +import java.util.LinkedList; import java.util.List; public class Solution { - public static List> solveNQueens(int n) { + public List> solveNQueens(int n) { char[][] board = new char[n][n]; for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) board[i][j] = '.'; List> res = new ArrayList>(); - int leftRow[] = new int[n]; - int upperDiagonal[] = new int[2 * n - 1]; - int lowerDiagonal[] = new int[2 * n - 1]; + int[] leftRow = new int[n]; + int[] upperDiagonal = new int[2 * n - 1]; + int[] lowerDiagonal = new int[2 * n - 1]; solve(0, board, res, leftRow, lowerDiagonal, upperDiagonal); return res; } @@ -22,9 +23,9 @@ void solve( int col, char[][] board, List> res, - int leftRow[], - int lowerDiagonal[], - int upperDiagonal[]) { + int[] leftRow, + int[] lowerDiagonal, + int[] upperDiagonal) { if (col == board.length) { res.add(construct(board)); return; @@ -48,9 +49,9 @@ void solve( } List construct(char[][] board) { - List res = new LinkedList(); - for (int i = 0; i < board.length; i++) { - String s = new String(board[i]); + List res = new LinkedList<>(); + for (char[] chars : board) { + String s = new String(chars); res.add(s); } return res; diff --git a/src/main/java/g0001_0100/s0055_jump_game/Solution.java b/src/main/java/g0001_0100/s0055_jump_game/Solution.java index 783549dbf..50b9c1e48 100644 --- a/src/main/java/g0001_0100/s0055_jump_game/Solution.java +++ b/src/main/java/g0001_0100/s0055_jump_game/Solution.java @@ -12,7 +12,7 @@ public boolean canJump(int[] nums) { if (nums[0] == 0) { return false; } - int fin = nums.length - 1; // 3 + int fin = nums.length - 1; for (int i = nums.length - 2; i >= 0; i--) { if ((nums[i] + i) >= fin) { fin = i; From 8e7a7fbee27c6d9ab170133e1394c3937fafc923 Mon Sep 17 00:00:00 2001 From: ThanhNIT Date: Mon, 11 Nov 2024 22:04:05 +0700 Subject: [PATCH 5/8] Update Solution.java --- src/main/java/g0001_0100/s0051_n_queens/Solution.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/g0001_0100/s0051_n_queens/Solution.java b/src/main/java/g0001_0100/s0051_n_queens/Solution.java index 35bb4c70b..8a26add99 100644 --- a/src/main/java/g0001_0100/s0051_n_queens/Solution.java +++ b/src/main/java/g0001_0100/s0051_n_queens/Solution.java @@ -10,8 +10,12 @@ public class Solution { public List> solveNQueens(int n) { char[][] board = new char[n][n]; - for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) board[i][j] = '.'; - List> res = new ArrayList>(); + for (int i = 0; i < n; i++) { + for (int j = 0; j < n; j++) { + board[i][j] = '.'; + } + } + List> res = new ArrayList<>(); int[] leftRow = new int[n]; int[] upperDiagonal = new int[2 * n - 1]; int[] lowerDiagonal = new int[2 * n - 1]; @@ -30,7 +34,6 @@ void solve( res.add(construct(board)); return; } - for (int row = 0; row < board.length; row++) { if (leftRow[row] == 0 && lowerDiagonal[row + col] == 0 From d5a583af71add89eb4d004228159d64bf9e77f43 Mon Sep 17 00:00:00 2001 From: ThanhNIT Date: Mon, 11 Nov 2024 22:12:23 +0700 Subject: [PATCH 6/8] update --- .../java/g0001_0100/s0049_group_anagrams/SolutionTest.java | 2 +- src/test/java/g0001_0100/s0051_n_queens/SolutionTest.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test/java/g0001_0100/s0049_group_anagrams/SolutionTest.java b/src/test/java/g0001_0100/s0049_group_anagrams/SolutionTest.java index c2460411d..a6aef3d20 100644 --- a/src/test/java/g0001_0100/s0049_group_anagrams/SolutionTest.java +++ b/src/test/java/g0001_0100/s0049_group_anagrams/SolutionTest.java @@ -12,9 +12,9 @@ class SolutionTest { @Test void groupAnagrams() { List> expected = new ArrayList<>(); + expected.add(Arrays.asList("tan", "nat")); expected.add(Arrays.asList("eat", "tea", "ate")); expected.add(Arrays.asList("bat")); - expected.add(Arrays.asList("tan", "nat")); List> actual = new Solution() .groupAnagrams(new String[] {"eat", "tea", "tan", "ate", "nat", "bat"}); diff --git a/src/test/java/g0001_0100/s0051_n_queens/SolutionTest.java b/src/test/java/g0001_0100/s0051_n_queens/SolutionTest.java index 92ee91edc..10e9dac53 100644 --- a/src/test/java/g0001_0100/s0051_n_queens/SolutionTest.java +++ b/src/test/java/g0001_0100/s0051_n_queens/SolutionTest.java @@ -14,8 +14,8 @@ void solveNQueens() { equalTo( ArrayUtils.getLists( new String[][] { - {".Q..", "...Q", "Q...", "..Q."}, - {"..Q.", "Q...", "...Q", ".Q.."} + {"..Q.", "Q...", "...Q", ".Q.."}, + {".Q..", "...Q", "Q...", "..Q."} }))); } From dd2fe2d6b8a2087f7aa8e63db99e6bbbdff37766 Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Mon, 11 Nov 2024 17:17:23 +0200 Subject: [PATCH 7/8] Update Solution.java --- src/main/java/g0001_0100/s0049_group_anagrams/Solution.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/g0001_0100/s0049_group_anagrams/Solution.java b/src/main/java/g0001_0100/s0049_group_anagrams/Solution.java index 8c36d26ed..408bf104f 100644 --- a/src/main/java/g0001_0100/s0049_group_anagrams/Solution.java +++ b/src/main/java/g0001_0100/s0049_group_anagrams/Solution.java @@ -9,6 +9,7 @@ import java.util.List; import java.util.Map; +@SuppressWarnings("java:S3824") public class Solution { public List> groupAnagrams(String[] strs) { Map> anagrams = new HashMap<>(); From 2e101ee4b0cf0df9817d10f733b86524e86f6f76 Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Mon, 11 Nov 2024 17:17:53 +0200 Subject: [PATCH 8/8] Update Solution.java --- src/main/java/g0001_0100/s0079_word_search/Solution.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/g0001_0100/s0079_word_search/Solution.java b/src/main/java/g0001_0100/s0079_word_search/Solution.java index d5cf9edbd..77228d817 100644 --- a/src/main/java/g0001_0100/s0079_word_search/Solution.java +++ b/src/main/java/g0001_0100/s0079_word_search/Solution.java @@ -5,7 +5,7 @@ // #2024_11_11_Time_64_ms_(98.51%)_Space_41.6_MB_(51.63%) public class Solution { - public boolean exists = false; + private boolean exists = false; public boolean exist(char[][] board, String word) { for (int i = 0; i < board.length; i++) {