Skip to content

Commit ca88df1

Browse files
authored
Added tests 11-31
1 parent 26498a6 commit ca88df1

File tree

19 files changed

+344
-0
lines changed

19 files changed

+344
-0
lines changed

src/main/python/g0001_0100/s0015_3sum/Solution0015.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
# #Top_Interview_150_Two_Pointers #Big_O_Time_O(n*log(n))_Space_O(n^2)
44
# #2025_07_22_Time_581_ms_(56.92%)_Space_20.72_MB_(36.56%)
55

6+
from typing import List
7+
68
class Solution:
79
def threeSum(self, nums: List[int]) -> List[List[int]]:
810
nums.sort()
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import unittest
2+
from Solution0015 import Solution
3+
4+
class SolutionTest(unittest.TestCase):
5+
def test_threeSum(self):
6+
self.assertEqual(Solution().threeSum([-1, 0, 1, 2, -1, -4]), [[-1, -1, 2], [-1, 0, 1]])
7+
8+
def test_threeSum2(self):
9+
self.assertEqual(Solution().threeSum([]), [])
10+
11+
def test_threeSum3(self):
12+
self.assertEqual(Solution().threeSum([0]), [])

src/main/python/g0001_0100/s0017_letter_combinations_of_a_phone_number/Solution0017.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
# #Udemy_Backtracking/Recursion #Top_Interview_150_Backtracking #Big_O_Time_O(4^n)_Space_O(n)
44
# #2025_07_22_Time_0_ms_(100.00%)_Space_17.68_MB_(92.03%)
55

6+
from typing import List
7+
68
class Solution:
79
def letterCombinations(self, digits: str) -> List[str]:
810
if not digits:
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import unittest
2+
from Solution0017 import Solution
3+
4+
class SolutionTest(unittest.TestCase):
5+
def test_letterCombinations(self):
6+
self.assertEqual(
7+
Solution().letterCombinations("23"),
8+
["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"],
9+
)
10+
11+
def test_letterCombinations2(self):
12+
self.assertEqual(Solution().letterCombinations(""), [])
13+
14+
def test_letterCombinations3(self):
15+
self.assertEqual(Solution().letterCombinations("2"), ["a", "b", "c"])
16+
17+
def test_letterCombinations4(self):
18+
self.assertEqual(Solution().letterCombinations("4"), ["g", "h", "i"])
19+
20+
def test_letterCombinations5(self):
21+
self.assertEqual(Solution().letterCombinations("5"), ["j", "k", "l"])
22+
23+
def test_letterCombinations6(self):
24+
self.assertEqual(Solution().letterCombinations("6"), ["m", "n", "o"])
25+
26+
def test_letterCombinations7(self):
27+
self.assertEqual(Solution().letterCombinations("7"), ["p", "q", "r", "s"])
28+
29+
def test_letterCombinations8(self):
30+
self.assertEqual(Solution().letterCombinations("8"), ["t", "u", "v"])
31+
32+
def test_letterCombinations9(self):
33+
self.assertEqual(Solution().letterCombinations("9"), ["w", "x", "y", "z"])

src/main/python/g0001_0100/s0019_remove_nth_node_from_end_of_list/Solution0019.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,13 @@
22
# #Algorithm_I_Day_5_Two_Pointers #Level_2_Day_3_Linked_List #Top_Interview_150_Linked_List
33
# #Big_O_Time_O(L)_Space_O(L) #2025_07_22_Time_0_ms_(100.00%)_Space_17.70_MB_(84.76%)
44

5+
from typing import Optional
6+
7+
class ListNode:
8+
def __init__(self, val=0, next=None):
9+
self.val = val
10+
self.next = next
11+
512
# Definition for singly-linked list.
613
# class ListNode:
714
# def __init__(self, val=0, next=None):
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import unittest
2+
import importlib
3+
4+
mod = importlib.import_module('Solution0019')
5+
6+
class ListNode:
7+
def __init__(self, val=0, next=None):
8+
self.val = val
9+
self.next = next
10+
11+
def __str__(self):
12+
return ""
13+
14+
def construct_linked_list(values):
15+
dummy = ListNode(0)
16+
curr = dummy
17+
for v in values:
18+
curr.next = ListNode(v)
19+
curr = curr.next
20+
return dummy.next
21+
22+
23+
def to_string(head):
24+
parts = []
25+
curr = head
26+
while curr is not None:
27+
parts.append(str(curr.val))
28+
curr = curr.next
29+
return ", ".join(parts)
30+
31+
class SolutionTest(unittest.TestCase):
32+
def test_removeNthFromEnd(self):
33+
mod.ListNode = ListNode
34+
node1 = construct_linked_list([1, 2, 3, 4, 5])
35+
result = mod.Solution().removeNthFromEnd(node1, 2)
36+
self.assertEqual(to_string(result), "1, 2, 3, 5")
37+
38+
def test_removeNthFromEnd2(self):
39+
mod.ListNode = ListNode
40+
node1 = ListNode(1)
41+
result = mod.Solution().removeNthFromEnd(node1, 1)
42+
self.assertIsNone(result)
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import unittest
2+
from Solution0020 import Solution
3+
4+
class SolutionTest(unittest.TestCase):
5+
def test_isValid(self):
6+
self.assertTrue(Solution().isValid("()"))
7+
8+
def test_isValid2(self):
9+
self.assertTrue(Solution().isValid("()[]{}"))
10+
11+
def test_isValid3(self):
12+
self.assertFalse(Solution().isValid("(]"))
13+
14+
def test_isValid4(self):
15+
self.assertFalse(Solution().isValid("([)]"))
16+
17+
def test_isValid5(self):
18+
self.assertTrue(Solution().isValid("{[]}"))

src/main/python/g0001_0100/s0021_merge_two_sorted_lists/Solution0021.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,13 @@
33
# #Level_1_Day_3_Linked_List #Udemy_Linked_List #Top_Interview_150_Linked_List
44
# #Big_O_Time_O(m+n)_Space_O(m+n) #2025_07_22_Time_0_ms_(100.00%)_Space_17.70_MB_(61.28%)
55

6+
from typing import Optional
7+
8+
class ListNode:
9+
def __init__(self, val=0, next=None):
10+
self.val = val
11+
self.next = next
12+
613
# Definition for singly-linked list.
714
# class ListNode:
815
# def __init__(self, val=0, next=None):
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import unittest
2+
import importlib
3+
4+
mod = importlib.import_module('Solution0021')
5+
6+
class ListNode:
7+
def __init__(self, val=0, next=None):
8+
self.val = val
9+
self.next = next
10+
11+
12+
def from_list(values):
13+
dummy = ListNode(0)
14+
curr = dummy
15+
for v in values:
16+
curr.next = ListNode(v)
17+
curr = curr.next
18+
return dummy.next
19+
20+
21+
def to_string(head):
22+
parts = []
23+
curr = head
24+
while curr is not None:
25+
parts.append(str(curr.val))
26+
curr = curr.next
27+
return ", ".join(parts)
28+
29+
30+
class SolutionTest(unittest.TestCase):
31+
def test_mergeTwoLists(self):
32+
mod.ListNode = ListNode
33+
l1 = from_list([1, 2, 4])
34+
l2 = from_list([1, 3, 4])
35+
self.assertEqual(to_string(mod.Solution().mergeTwoLists(l1, l2)), "1, 1, 2, 3, 4, 4")
36+
37+
38+
def test_mergeTwoLists2(self):
39+
mod.ListNode = ListNode
40+
self.assertEqual(to_string(mod.Solution().mergeTwoLists(ListNode(0), ListNode(0))), "0, 0")

src/main/python/g0001_0100/s0022_generate_parentheses/Solution0022.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
# #Top_Interview_150_Backtracking #Big_O_Time_O(2^n)_Space_O(n)
44
# #2025_07_22_Time_0_ms_(100.00%)_Space_18.17_MB_(25.52%)
55

6+
from typing import List
7+
68
class Solution:
79
def generateParenthesis(self, n: int) -> List[str]:
810
ans = []

0 commit comments

Comments
 (0)