diff --git a/find-minimum-in-rotated-sorted-array/sm9171.java b/find-minimum-in-rotated-sorted-array/sm9171.java new file mode 100644 index 000000000..20350adee --- /dev/null +++ b/find-minimum-in-rotated-sorted-array/sm9171.java @@ -0,0 +1,12 @@ +class Solution { + public int findMin(int[] nums) { + int min = Integer.MAX_VALUE; + + for (int i = 0; i < nums.length; i++) { + if (nums[i] < min) { + min = nums[i]; + } + } + return min; + } +} diff --git a/maximum-depth-of-binary-tree/sm9171.java b/maximum-depth-of-binary-tree/sm9171.java new file mode 100644 index 000000000..300d791c7 --- /dev/null +++ b/maximum-depth-of-binary-tree/sm9171.java @@ -0,0 +1,10 @@ +class Solution { + public int maxDepth(TreeNode root) { + if (root == null) { + return 0; + } + int leftDepth = maxDepth(root.left); + int rightDepth = maxDepth(root.right); + return Math.max(leftDepth, rightDepth) + 1; + } +} diff --git a/merge-two-sorted-lists/sm9171.java b/merge-two-sorted-lists/sm9171.java new file mode 100644 index 000000000..0f9e9301d --- /dev/null +++ b/merge-two-sorted-lists/sm9171.java @@ -0,0 +1,20 @@ +class Solution { + public ListNode mergeTwoLists(ListNode list1, ListNode list2) { + ListNode dummy = new ListNode(-1); + ListNode node = dummy; + + while (list1 != null && list2 != null) { + if (list1.val < list2.val) { + node.next = list1; + list1 = list1.next; + } else { + node.next = list2; + list2 = list2.next; + } + node = node.next; + } + + node.next = list1 != null ? list1 : list2; + return dummy.next; + } +} diff --git a/word-search/sm9171.java b/word-search/sm9171.java new file mode 100644 index 000000000..2762481b6 --- /dev/null +++ b/word-search/sm9171.java @@ -0,0 +1,42 @@ +class Solution { + public boolean exist(char[][] board, String word) { + if (board == null || board.length == 0 || word == null || word.length() == 0) { + return false; + } + + int rows = board.length; + int cols = board[0].length; + boolean[][] visited = new boolean[rows][cols]; + + for (int i = 0; i < rows; i++) { + for (int j = 0; j < cols; j++) { + if (dfs(board, visited, i, j, word, 0)) { + return true; + } + } + } + return false; + } + + private static boolean dfs(char[][] board, boolean[][] visited, int i, int j, String word, int index) { + if (index == word.length()) { + return true; + } + + if (i < 0 || i >= board.length || j < 0 || j >= board[0].length || visited[i][j] || board[i][j] != word.charAt(index)) { + return false; + } + + + visited[i][j] = true; + + boolean found = dfs(board, visited, i + 1, j, word, index + 1) || + dfs(board, visited, i - 1, j, word, index + 1) || + dfs(board, visited, i, j + 1, word, index + 1) || + dfs(board, visited, i, j - 1, word, index + 1); + + visited[i][j] = false; + + return found; + } +}