diff --git a/src/my_project/interviews/top_150_questions_round_20/contains_duplicates.py b/src/my_project/interviews/top_150_questions_round_20/contains_duplicates.py new file mode 100644 index 00000000..3247a3ff --- /dev/null +++ b/src/my_project/interviews/top_150_questions_round_20/contains_duplicates.py @@ -0,0 +1,22 @@ +from typing import List, Union, Collection, Mapping, Optional +from abc import ABC, abstractmethod +from collections import defaultdict + +class Solution: + def containsNearbyDuplicate(self, nums: List[int], k: int) -> bool: + + answer_dic = defaultdict(int) + len_nums = len(nums) + + for i in range(len_nums): + + answer_dic[nums[i]] += 1 + + if i > k: + answer_dic[nums[i - (k+1)]] -= 1 + + if answer_dic[nums[i]] > 1: + return True + + return False + diff --git a/tests/test_150_questions_round_20/test_contains_duplicates_round_20.py b/tests/test_150_questions_round_20/test_contains_duplicates_round_20.py new file mode 100644 index 00000000..2f17a55a --- /dev/null +++ b/tests/test_150_questions_round_20/test_contains_duplicates_round_20.py @@ -0,0 +1,15 @@ +import unittest +from src.my_project.interviews.top_150_questions_round_20\ +.contains_duplicates import Solution + +class ContainsDuplicatesTestCase(unittest.TestCase): + + def test_contains_duplicates(self): + solution = Solution() + output = solution.containsNearbyDuplicate(nums=[1,2,3,1], k=3) + self.assertTrue(output) + + def test_contains_no_duplicates(self): + solution = Solution() + output = solution.containsNearbyDuplicate(nums=[1,2,3,1,2,3], k=2) + self.assertFalse(output) \ No newline at end of file