From 59f1192621b49f89e20b8ce881829b905bae397f Mon Sep 17 00:00:00 2001 From: printjin Date: Sun, 1 Jun 2025 13:27:31 +0900 Subject: [PATCH 1/5] Solve : Invert Binary Tree --- invert-binary-tree/printjin-gmailcom.py | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 invert-binary-tree/printjin-gmailcom.py diff --git a/invert-binary-tree/printjin-gmailcom.py b/invert-binary-tree/printjin-gmailcom.py new file mode 100644 index 000000000..507e1385d --- /dev/null +++ b/invert-binary-tree/printjin-gmailcom.py @@ -0,0 +1,8 @@ +class Solution: + def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]: + if not root: + return None + root.left, root.right = root.right, root.left + self.invertTree(root.left) + self.invertTree(root.right) + return root From 53939dbc698b44086d0570503c1c2473268e14cf Mon Sep 17 00:00:00 2001 From: printjin Date: Sun, 1 Jun 2025 13:58:22 +0900 Subject: [PATCH 2/5] Solve : Search In Rotated Sorted Array --- .../printjin-gmailcom.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 search-in-rotated-sorted-array/printjin-gmailcom.py diff --git a/search-in-rotated-sorted-array/printjin-gmailcom.py b/search-in-rotated-sorted-array/printjin-gmailcom.py new file mode 100644 index 000000000..02823459d --- /dev/null +++ b/search-in-rotated-sorted-array/printjin-gmailcom.py @@ -0,0 +1,18 @@ +class Solution: + def search(self, nums, target): + left, right = 0, len(nums) - 1 + while left <= right: + mid = (left + right) // 2 + if nums[mid] == target: + return mid + if nums[left] <= nums[mid]: + if nums[left] <= target < nums[mid]: + right = mid - 1 + else: + left = mid + 1 + else: + if nums[mid] < target <= nums[right]: + left = mid + 1 + else: + right = mid - 1 + return -1 From 45f0bc9c56ea12232732f068fc8281a45a12deb6 Mon Sep 17 00:00:00 2001 From: printjin Date: Sun, 1 Jun 2025 14:00:28 +0900 Subject: [PATCH 3/5] Solve : Course Schedule --- course-schedule/printjin-gmailcom.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 course-schedule/printjin-gmailcom.py diff --git a/course-schedule/printjin-gmailcom.py b/course-schedule/printjin-gmailcom.py new file mode 100644 index 000000000..6c067034a --- /dev/null +++ b/course-schedule/printjin-gmailcom.py @@ -0,0 +1,23 @@ +class Solution: + def canFinish(self, numCourses, prerequisites): + from collections import defaultdict + graph = defaultdict(list) + for a, b in prerequisites: + graph[b].append(a) + visited = [0] * numCourses + def dfs(course): + if visited[course] == 1: + return False + if visited[course] == 2: + return True + visited[course] = 1 + for next_course in graph[course]: + if not dfs(next_course): + return False + visited[course] = 2 + return True + for course in range(numCourses): + if not dfs(course): + return False + + return True From 2d5a19621aaa0e0b30b66ab1a7d163c178c2cc00 Mon Sep 17 00:00:00 2001 From: printjin Date: Sun, 1 Jun 2025 14:02:49 +0900 Subject: [PATCH 4/5] Solve : Jump Game --- jump-game/printjin-gmailcom.py | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 jump-game/printjin-gmailcom.py diff --git a/jump-game/printjin-gmailcom.py b/jump-game/printjin-gmailcom.py new file mode 100644 index 000000000..c9aff5f50 --- /dev/null +++ b/jump-game/printjin-gmailcom.py @@ -0,0 +1,8 @@ +class Solution: + def canJump(self, nums): + max_reach = 0 + for i in range(len(nums)): + if i > max_reach: + return False + max_reach = max(max_reach, i + nums[i]) + return True From 2eef7c937a5edb44394eeea5936571e3ecf3ddbc Mon Sep 17 00:00:00 2001 From: printjin Date: Sun, 1 Jun 2025 14:39:39 +0900 Subject: [PATCH 5/5] Solve : Merge K Sorted Lists --- merge-k-sorted-lists/printjin-gmailcom.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 merge-k-sorted-lists/printjin-gmailcom.py diff --git a/merge-k-sorted-lists/printjin-gmailcom.py b/merge-k-sorted-lists/printjin-gmailcom.py new file mode 100644 index 000000000..c7c0da8c4 --- /dev/null +++ b/merge-k-sorted-lists/printjin-gmailcom.py @@ -0,0 +1,15 @@ +from typing import List, Optional +class Solution: + def mergeKLists(self, lists)]: + values = [] + for l in lists: + while l: + values.append(l.val) + l = l.next + values.sort() + dummy = ListNode(0) + current = dummy + for val in values: + current.next = ListNode(val) + current = current.next + return dummy.next