Skip to content

Commit 6de04e8

Browse files
Merge pull request #1541 from printjin-gmailcom/main
[printjin-gmailcom] Week 10 Solutions
2 parents 9295f4c + 2eef7c9 commit 6de04e8

File tree

5 files changed

+72
-0
lines changed

5 files changed

+72
-0
lines changed

course-schedule/printjin-gmailcom.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
class Solution:
2+
def canFinish(self, numCourses, prerequisites):
3+
from collections import defaultdict
4+
graph = defaultdict(list)
5+
for a, b in prerequisites:
6+
graph[b].append(a)
7+
visited = [0] * numCourses
8+
def dfs(course):
9+
if visited[course] == 1:
10+
return False
11+
if visited[course] == 2:
12+
return True
13+
visited[course] = 1
14+
for next_course in graph[course]:
15+
if not dfs(next_course):
16+
return False
17+
visited[course] = 2
18+
return True
19+
for course in range(numCourses):
20+
if not dfs(course):
21+
return False
22+
23+
return True
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
class Solution:
2+
def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
3+
if not root:
4+
return None
5+
root.left, root.right = root.right, root.left
6+
self.invertTree(root.left)
7+
self.invertTree(root.right)
8+
return root

jump-game/printjin-gmailcom.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
class Solution:
2+
def canJump(self, nums):
3+
max_reach = 0
4+
for i in range(len(nums)):
5+
if i > max_reach:
6+
return False
7+
max_reach = max(max_reach, i + nums[i])
8+
return True
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
from typing import List, Optional
2+
class Solution:
3+
def mergeKLists(self, lists)]:
4+
values = []
5+
for l in lists:
6+
while l:
7+
values.append(l.val)
8+
l = l.next
9+
values.sort()
10+
dummy = ListNode(0)
11+
current = dummy
12+
for val in values:
13+
current.next = ListNode(val)
14+
current = current.next
15+
return dummy.next
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class Solution:
2+
def search(self, nums, target):
3+
left, right = 0, len(nums) - 1
4+
while left <= right:
5+
mid = (left + right) // 2
6+
if nums[mid] == target:
7+
return mid
8+
if nums[left] <= nums[mid]:
9+
if nums[left] <= target < nums[mid]:
10+
right = mid - 1
11+
else:
12+
left = mid + 1
13+
else:
14+
if nums[mid] < target <= nums[right]:
15+
left = mid + 1
16+
else:
17+
right = mid - 1
18+
return -1

0 commit comments

Comments
 (0)