Skip to content

Commit bc04345

Browse files
committed
added more problems
1 parent 1fbbef5 commit bc04345

File tree

2 files changed

+75
-0
lines changed

2 files changed

+75
-0
lines changed

prynatas/0020_merge_intervals.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
class Solution:
2+
def merge(self, intervals):
3+
# check if single interval and return input if true
4+
if len(intervals) <= 1: return intervals
5+
6+
# sort the intervals based on start time
7+
# JavaScript: intervals.sort((a, b) => a[0] - b[0])
8+
intervals.sort(key=lambda interval: interval[0])
9+
# declare a variable to track new intervals
10+
new_intervals = []
11+
# declare a variable to store last start time
12+
last_start = intervals[0][0]
13+
# declare a variable to store last end time
14+
last_end = intervals[0][1]
15+
16+
# iterate through intervals starting at the 2nd interval
17+
for i in range(1, len(intervals)):
18+
cur_interval = intervals[i]
19+
# if overlapping; cur_interval[0] -> current interval's start time
20+
if cur_interval[0] <= last_end:
21+
last_end = max(last_end, cur_interval[1])
22+
else:
23+
new_intervals.append([last_start, last_end])
24+
last_start = cur_interval[0]
25+
last_end = cur_interval[1]
26+
27+
# add the last interval to the new intervals
28+
new_intervals.append([last_start, last_end])
29+
30+
# return new intervals
31+
return new_intervals
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# Definition for a binary tree node.
2+
# class TreeNode:
3+
# def __init__(self, val=0, left=None, right=None):
4+
# self.val = val
5+
# self.left = left
6+
# self.right = right
7+
8+
from collections import deque
9+
10+
class Solution:
11+
def levelOrder(self, root):
12+
if not root: return None
13+
14+
# create a queue
15+
queue = deque()
16+
# enque the root
17+
queue.append(root)
18+
# declare a variable to store level arrays (result)
19+
result = []
20+
21+
# loop while queue is not empty
22+
while queue:
23+
# declare a variable to store level values (level)
24+
level = []
25+
# for each node in queue
26+
for _ in range(len(queue)):
27+
# deque the node
28+
node = queue.popleft()
29+
# append the node value to level
30+
level.append(node.val)
31+
# if there's a left node
32+
if node.left:
33+
# enqueue the left node
34+
queue.append(node.left)
35+
# if there's a right node
36+
if node.right:
37+
# enqueue the right node
38+
queue.append(node.right)
39+
40+
# append level to result
41+
result.append(level)
42+
43+
# return result
44+
return result

0 commit comments

Comments
 (0)