Coverage for blog/dsa/leetcode/twosum/__init__.py: 73%
26 statements
« prev ^ index » next coverage.py v7.6.12, created at 2025-02-20 16:23 +0000
« prev ^ index » next coverage.py v7.6.12, created at 2025-02-20 16:23 +0000
1import pytest
4# start snippet solution_trivial
5class SolutionTrivial:
6 def twoSum(self, nums: list[int], target: int) -> list[int]:
8 n = len(nums)
9 for k in range(n):
10 for j in range(k + 1, n):
11 if nums[k] + nums[j] == target:
12 return [k, j]
13 return [k, j]
14 # end snippet solution_trivial
17# start snippet solution
18class Solution:
19 def twoSum(self, nums: list[int], target: int) -> list[int]:
21 memo: dict[int, int] = dict()
22 for k, num in enumerate(nums):
24 diff = target - num
25 if num in memo:
26 return [k, memo[num]]
28 memo[diff] = k
30 raise ValueError("No pair!")
31 # end snippet solution
34@pytest.fixture
35def solution():
36 return Solution()
39@pytest.mark.parametrize(
40 "nums, target, answer",
41 (
42 ([2, 7, 11, 15], 9, [0, 1]),
43 ([3, 4, 2], 6, [1, 2]),
44 ([3, 3], 6, [0, 1]),
45 ),
46)
47def test_solution(solution: Solution, nums: list[int], target: int, answer: list[int]):
48 got = solution.twoSum(nums, target)
49 print(got)
50 assert sorted(got) == sorted(answer)