Skip to content

Commit b626bc6

Browse files
authored
Merge pull request #1554 from ivanpenaloza/february20
adding algo
2 parents e3f7a08 + b4431e5 commit b626bc6

5 files changed

Lines changed: 135 additions & 0 deletions

File tree

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
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+
20+
21+
22+
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: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
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 kthSmallest(self, root: TreeNode, k: int) -> int:
13+
# Collect all values in sorted order using in-order traversal
14+
values = []
15+
16+
def inorder(node):
17+
if not node:
18+
return
19+
inorder(node.left)
20+
values.append(node.val)
21+
inorder(node.right)
22+
23+
inorder(root)
24+
return values[k - 1]
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { TreeNode } from './TreeNode';
2+
3+
function kthSmallest(root: TreeNode | null, k: number): number {
4+
const result: number[] = [];
5+
6+
function inorder(node: TreeNode | null): void {
7+
if (!node) return;
8+
9+
inorder(node.left);
10+
result.push(node.val);
11+
inorder(node.right);
12+
}
13+
14+
inorder(root);
15+
return result[k - 1];
16+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import unittest
2+
from src.my_project.interviews.top_150_questions_round_22\
3+
.ex_82_k_smallest_element_in_bst import Solution, TreeNode
4+
5+
class BinaryTreeLevelOrderTraversalTestCase(unittest.TestCase):
6+
7+
def create_binary_tree(self, values):
8+
"""
9+
Helper function to create a binary tree from a list of values (level-order).
10+
11+
:param values: List of node values (None represents null nodes)
12+
:return: Root of the binary tree
13+
"""
14+
if not values:
15+
return None
16+
17+
root = TreeNode(values[0])
18+
queue = [root]
19+
i = 1
20+
21+
while queue and i < len(values):
22+
node = queue.pop(0)
23+
24+
if i < len(values) and values[i] is not None:
25+
node.left = TreeNode(values[i])
26+
queue.append(node.left)
27+
i += 1
28+
29+
if i < len(values) and values[i] is not None:
30+
node.right = TreeNode(values[i])
31+
queue.append(node.right)
32+
i += 1
33+
34+
return root
35+
36+
def test_example_1(self):
37+
# Example 1: Input: root = [3,1,4,null,2], k = 1
38+
# Output: 1
39+
solution = Solution()
40+
root = self.create_binary_tree([3, 1, 4, None, 2])
41+
result = solution.kthSmallest(root, 1)
42+
self.assertEqual(result, 1)
43+
44+
def test_example_2(self):
45+
# Example 2: Input: root = [5,3,6,2,4,null,null,1], k = 3
46+
# Output: 3
47+
solution = Solution()
48+
root = self.create_binary_tree([5, 3, 6, 2, 4, None, None, 1])
49+
result = solution.kthSmallest(root, 3)
50+
self.assertEqual(result, 3)

0 commit comments

Comments
 (0)