Skip to content

Commit d9d5f9e

Browse files
committed
Update Commit
1 parent a01dbd9 commit d9d5f9e

File tree

5 files changed

+162
-0
lines changed

5 files changed

+162
-0
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
from typing import List
2+
3+
def nextGreaterElement(nums1: List[int], nums2: List[int]) -> List[int]:
4+
next_greater = {}
5+
stack = []
6+
for num in nums2:
7+
while stack and stack[-1] < num:
8+
next_greater[stack.pop()] = num
9+
stack.append(num)
10+
while stack:
11+
next_greater[stack.pop()] = -1
12+
return [next_greater[num] for num in nums1]
13+
14+
if __name__ == "__main__":
15+
print(nextGreaterElement([4,1,2], [1,3,4,2]))
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
from collections import deque
2+
from typing import List, Optional
3+
4+
class Node:
5+
def __init__(self, val=0, left=None, right=None):
6+
self.val = val
7+
self.left = left
8+
self.right = right
9+
10+
class Solution:
11+
def levelOrder(self, root: Optional[Node]) -> List[List[int]]:
12+
if not root:
13+
return []
14+
result = []
15+
queue = deque([root])
16+
17+
while queue:
18+
level_size = len(queue)
19+
current_level = []
20+
21+
for _ in range(level_size):
22+
node = queue.popleft()
23+
current_level.append(node.val)
24+
25+
if node.left:
26+
queue.append(node.left)
27+
28+
if node.right:
29+
queue.append(node.right)
30+
result.append(current_level)
31+
32+
return result
33+
34+
if __name__ == "__main__":
35+
root = Node(3)
36+
root.left = Node(9)
37+
root.right = Node(20)
38+
root.right.left = Node(15)
39+
root.right.right = Node(7)
40+
41+
print(Solution().levelOrder(root))
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
from collections import deque
2+
from typing import List, Optional
3+
4+
class Node:
5+
def __init__(self, val=0, left=None, right=None):
6+
self.val = val
7+
self.left = left
8+
self.right = right
9+
10+
class Solution:
11+
def levelOrder(self, root: Optional[Node]) -> List[List[int]]:
12+
if not root:
13+
return []
14+
result = []
15+
queue = deque([root])
16+
left_to_right = True
17+
18+
while queue:
19+
level_size = len(queue)
20+
current_level = []
21+
22+
for _ in range(level_size):
23+
node = queue.popleft()
24+
current_level.append(node.val)
25+
26+
if node.left:
27+
queue.append(node.left)
28+
29+
if node.right:
30+
queue.append(node.right)
31+
32+
if not left_to_right:
33+
current_level.reverse()
34+
35+
result.append(current_level)
36+
left_to_right = not left_to_right
37+
38+
return result
39+
40+
if __name__ == "__main__":
41+
root = Node(3)
42+
root.left = Node(9)
43+
root.right = Node(20)
44+
root.right.left = Node(15)
45+
root.right.right = Node(7)
46+
47+
print(Solution().levelOrder(root))
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
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+
class Solution:
9+
def kthSmallest(self, root: TreeNode, k: int) -> int:
10+
# Initialize variables to keep track of count and result
11+
self.count = 0
12+
self.result = None
13+
# Helper function for in-order traversal
14+
def in_order_traversal(node):
15+
if not node or self.result is not None:
16+
return
17+
# Traverse the left subtree
18+
in_order_traversal(node.left)
19+
# Process the current node
20+
self.count += 1
21+
if self.count == k:
22+
self.result = node.val
23+
return
24+
# Traverse the right subtree
25+
in_order_traversal(node.right)
26+
# Perform the in-order traversal
27+
in_order_traversal(root)
28+
return self.result
29+
30+
if __name__ == "__main__":
31+
root = TreeNode(3)
32+
root.left = TreeNode(1)
33+
root.right = TreeNode(4)
34+
root.left.right = TreeNode(2)
35+
print(Solution().kthSmallest(root, 1))
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import heapq
2+
from typing import List
3+
4+
class KthLargest:
5+
6+
def __init__(self, k: int, nums: List[int]):
7+
self.k = k
8+
self.minheap = nums
9+
heapq.heapify(self.minheap)
10+
while len(self.minheap) > k:
11+
heapq.heappop(self.minheap)
12+
def add(self, val: int) -> int:
13+
heapq.heappush(self.minheap, val)
14+
if len(self.minheap) > self.k:
15+
heapq.heappop(self.minheap)
16+
return self.minheap[0]
17+
18+
if __name__ == "__main__":
19+
kth_largest = KthLargest(3, [4, 5, 8, 2])
20+
print(kth_largest.add(3))
21+
print(kth_largest.add(5))
22+
print(kth_largest.add(10))
23+
print(kth_largest.add(9))
24+
print(kth_largest.add(4))

0 commit comments

Comments
 (0)