Skip to content

Commit 376b941

Browse files
committed
adding algo
1 parent 80f6e2f commit 376b941

5 files changed

Lines changed: 163 additions & 0 deletions

File tree

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
from typing import List, Union, Collection, Mapping, Optional
2+
from abc import ABC, abstractmethod
3+
4+
class Solution:
5+
def twoSum(self, nums: List[int], target: int) -> List[int]:
6+
7+
answer = dict()
8+
9+
for k, v in enumerate(nums):
10+
11+
if v in answer:
12+
return [answer[v], k]
13+
else:
14+
answer[target - v] = k
15+
16+
return []
17+
18+
19+
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
from typing import List, Union, Collection, Mapping, Optional
2+
from abc import ABC, abstractmethod
3+
import re
4+
5+
class Solution:
6+
def isPalindrome(self, s: str) -> bool:
7+
8+
# To lowercase
9+
s = s.lower()
10+
11+
# Remove non-alphanumeric characters
12+
s = re.sub(pattern=r'[^a-zA-Z0-9]', repl='', string=s)
13+
14+
# Determine if s is palindrome or not
15+
len_s = len(s)
16+
17+
for i in range(len_s//2):
18+
19+
if s[i] != s[len_s - 1 - i]:
20+
return False
21+
22+
return True
23+
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
from typing import List, Union, Collection, Mapping, Optional
2+
from abc import ABC, abstractmethod
3+
from collections import deque
4+
5+
class TreeNode:
6+
def __init__(self, val=0, left=None, right=None):
7+
self.val = val
8+
self.left = left
9+
self.right = right
10+
11+
class Solution:
12+
def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
13+
if not root:
14+
return []
15+
16+
result = []
17+
queue = deque([root])
18+
19+
while queue:
20+
level_size = len(queue)
21+
level = []
22+
for _ in range(level_size):
23+
node = queue.popleft()
24+
level.append(node.val)
25+
if node.left:
26+
queue.append(node.left)
27+
if node.right:
28+
queue.append(node.right)
29+
result.append(level)
30+
31+
return result
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { TreeNode } from './TreeNode';
2+
3+
function levelOrder(root: TreeNode | null): number[][] {
4+
if (!root) {
5+
return [];
6+
}
7+
8+
const result: number[][] = [];
9+
const queue: TreeNode[] = [root];
10+
11+
while (queue.length > 0) {
12+
const levelSize = queue.length;
13+
const level: number[] = [];
14+
15+
for (let i = 0; i < levelSize; i++) {
16+
const node = queue.shift()!;
17+
level.push(node.val);
18+
19+
if (node.left) {
20+
queue.push(node.left);
21+
}
22+
if (node.right) {
23+
queue.push(node.right);
24+
}
25+
}
26+
27+
result.push(level);
28+
}
29+
30+
return result;
31+
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import unittest
2+
from src.my_project.interviews.top_150_questions_round_22\
3+
.ex_81_binary_tree_level_order_traversal import Solution, TreeNode
4+
5+
6+
class BinaryTreeLevelOrderTraversalTestCase(unittest.TestCase):
7+
8+
def create_binary_tree(self, values):
9+
"""
10+
Helper function to create a binary tree from a list of values (level-order).
11+
12+
:param values: List of node values (None represents null nodes)
13+
:return: Root of the binary tree
14+
"""
15+
if not values:
16+
return None
17+
18+
root = TreeNode(values[0])
19+
queue = [root]
20+
i = 1
21+
22+
while queue and i < len(values):
23+
node = queue.pop(0)
24+
25+
if i < len(values) and values[i] is not None:
26+
node.left = TreeNode(values[i])
27+
queue.append(node.left)
28+
i += 1
29+
30+
if i < len(values) and values[i] is not None:
31+
node.right = TreeNode(values[i])
32+
queue.append(node.right)
33+
i += 1
34+
35+
return root
36+
37+
def test_example_1(self):
38+
# Example 1: Input: root = [3,9,20,null,null,15,7]
39+
# Output: [[3],[9,20],[15,7]]
40+
solution = Solution()
41+
root = self.create_binary_tree([3, 9, 20, None, None, 15, 7])
42+
result = solution.levelOrder(root)
43+
self.assertEqual(result, [[3], [9, 20], [15, 7]])
44+
45+
def test_example_2(self):
46+
# Example 2: Input: root = [1]
47+
# Output: [[1]]
48+
solution = Solution()
49+
root = self.create_binary_tree([1])
50+
result = solution.levelOrder(root)
51+
self.assertEqual(result, [[1]])
52+
53+
def test_example_3(self):
54+
# Example 3: Input: root = []
55+
# Output: []
56+
solution = Solution()
57+
root = self.create_binary_tree([])
58+
result = solution.levelOrder(root)
59+
self.assertEqual(result, [])

0 commit comments

Comments
 (0)