From ea5153cdc7c8f5deb9da3eaf2cb717f895e64466 Mon Sep 17 00:00:00 2001 From: sora0319 Date: Sat, 7 Jun 2025 22:26:40 +0900 Subject: [PATCH 1/6] solve invert binary tree --- invert-binary-tree/sora0319.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 invert-binary-tree/sora0319.java diff --git a/invert-binary-tree/sora0319.java b/invert-binary-tree/sora0319.java new file mode 100644 index 000000000..fe778dab9 --- /dev/null +++ b/invert-binary-tree/sora0319.java @@ -0,0 +1,15 @@ +public class Solution { + public TreeNode invertTree(TreeNode root) { + if (root == null) { + return null; + } + + TreeNode left = invertTree(root.left); + TreeNode right = invertTree(root.right); + + root.left = right; + root.right = left; + + return root; + } +} From 340e1d1f0d0e14d138cc5bf5affa04e902758777 Mon Sep 17 00:00:00 2001 From: sora0319 Date: Sat, 7 Jun 2025 22:27:01 +0900 Subject: [PATCH 2/6] solve search in rotated sorted array --- search-in-rotated-sorted-array/sora0319.java | 50 ++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 search-in-rotated-sorted-array/sora0319.java diff --git a/search-in-rotated-sorted-array/sora0319.java b/search-in-rotated-sorted-array/sora0319.java new file mode 100644 index 000000000..92377931b --- /dev/null +++ b/search-in-rotated-sorted-array/sora0319.java @@ -0,0 +1,50 @@ +public class Solution { + public int search(int[] nums, int target) { + int p = findPivot(nums); + + int index = binarySearch(nums, 0, p - 1, target); + if (index != -1) { + return index; + } + return binarySearch(nums, p, nums.length - 1, target); + } + + private int findPivot(int[] nums) { + int l = 0; + int h = nums.length - 1; + + while (l <= h) { + int mid = l + (h - l) / 2; + + if (mid > 0 && nums[mid - 1] > nums[mid]) { + return mid; + } + + if (nums[0] <= nums[mid]) { + l = mid + 1; + } else { + h = mid - 1; + } + } + + return 0; + } + + private int binarySearch(int[] nums, int l, int h, int target) { + while (l <= h) { + int mid = l + (h - l) / 2; + + if (nums[mid] == target) { + return mid; + } + + if (nums[mid] < target) { + l = mid + 1; + } else { + h = mid - 1; + } + } + + return -1; + } +} \ No newline at end of file From 6b9bb1e9cdda9cdab5688228c8f7c924d88d562a Mon Sep 17 00:00:00 2001 From: sora0319 Date: Sat, 7 Jun 2025 22:27:15 +0900 Subject: [PATCH 3/6] solve jump game --- jump-game/sora0319.java | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 jump-game/sora0319.java diff --git a/jump-game/sora0319.java b/jump-game/sora0319.java new file mode 100644 index 000000000..d5412b3eb --- /dev/null +++ b/jump-game/sora0319.java @@ -0,0 +1,10 @@ +public class Solution { + public boolean canJump(int[] nums) { + int longLength = 0; + for (int i = 0; i < nums.length; i++) { + if (i > longLength) return false; + longLength = Math.max(longLength, i + nums[i]); + } + return true; + } +} \ No newline at end of file From 9083b8b7954f972385e20eda911f06a0e50bf10c Mon Sep 17 00:00:00 2001 From: sora0319 Date: Sat, 7 Jun 2025 22:27:27 +0900 Subject: [PATCH 4/6] solve course schedule --- course-schedule/sora0319.java | 46 +++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 course-schedule/sora0319.java diff --git a/course-schedule/sora0319.java b/course-schedule/sora0319.java new file mode 100644 index 000000000..c0645ee70 --- /dev/null +++ b/course-schedule/sora0319.java @@ -0,0 +1,46 @@ +public class Solution { + public boolean canFinish(int numCourses, int[][] prerequisites) { + int[] degree = new int[numCourses]; + + Map> graph = new HashMap<>(); + + for (int[] p : prerequisites) { + int course = p[0]; + int pre = p[1]; + + degree[course]++; + + if (!graph.containsKey(pre)) { + graph.put(pre, new ArrayList<>()); + } + graph.get(pre).add(course); + } + + Queue q = new LinkedList<>(); + for (int i = 0; i < numCourses; i++) { + if (degree[i] == 0) { + q.offer(i); + } + } + + int finishedCourses = 0; + + while (!q.isEmpty()) { + int curr = q.poll(); + finishedCourses++; + + if (graph.containsKey(curr)) { + for (int neighbor : graph.get(curr)) { + degree[neighbor]--; + if (degree[neighbor] == 0) { + q.offer(neighbor); + } + } + } + } + + if(finishedCourses == numCourses) return true; + + return false; + } +} \ No newline at end of file From 00363b092b97f4cbc057daa1963539d4aea0f044 Mon Sep 17 00:00:00 2001 From: sora0319 Date: Sat, 7 Jun 2025 22:27:38 +0900 Subject: [PATCH 5/6] solve merge k sorted list --- merge-k-sorted-lists/sora0319.java | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 merge-k-sorted-lists/sora0319.java diff --git a/merge-k-sorted-lists/sora0319.java b/merge-k-sorted-lists/sora0319.java new file mode 100644 index 000000000..175bea730 --- /dev/null +++ b/merge-k-sorted-lists/sora0319.java @@ -0,0 +1,26 @@ +public class Solution { + public ListNode mergeKLists(ListNode[] lists) { + PriorityQueue pq = new PriorityQueue<>(Comparator.comparingInt(node -> node.val)); + + for (ListNode list : lists) { + if (list != null) { + pq.offer(list); + } + } + + ListNode temp = new ListNode(-1); + ListNode head = temp; + + while (!pq.isEmpty()) { + ListNode minNode = pq.poll(); + head.next = minNode; + head = head.next; + + if (minNode.next != null) { + pq.offer(minNode.next); + } + } + + return temp.next; + } +} From 0ebd4a541f16a0a23a1386b0339d6c8021c82491 Mon Sep 17 00:00:00 2001 From: sora0319 Date: Sat, 7 Jun 2025 22:32:51 +0900 Subject: [PATCH 6/6] add inline --- course-schedule/sora0319.java | 3 ++- jump-game/sora0319.java | 3 ++- search-in-rotated-sorted-array/sora0319.java | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/course-schedule/sora0319.java b/course-schedule/sora0319.java index c0645ee70..0551a2af6 100644 --- a/course-schedule/sora0319.java +++ b/course-schedule/sora0319.java @@ -43,4 +43,5 @@ public boolean canFinish(int numCourses, int[][] prerequisites) { return false; } -} \ No newline at end of file +} + diff --git a/jump-game/sora0319.java b/jump-game/sora0319.java index d5412b3eb..4089a94c9 100644 --- a/jump-game/sora0319.java +++ b/jump-game/sora0319.java @@ -7,4 +7,5 @@ public boolean canJump(int[] nums) { } return true; } -} \ No newline at end of file +} + diff --git a/search-in-rotated-sorted-array/sora0319.java b/search-in-rotated-sorted-array/sora0319.java index 92377931b..88fa4aadb 100644 --- a/search-in-rotated-sorted-array/sora0319.java +++ b/search-in-rotated-sorted-array/sora0319.java @@ -47,4 +47,5 @@ private int binarySearch(int[] nums, int l, int h, int target) { return -1; } -} \ No newline at end of file +} +