From 3a2b47c35df55c2b071d5c441def13406bbfd165 Mon Sep 17 00:00:00 2001 From: ivan Date: Mon, 19 May 2025 04:30:01 -0600 Subject: [PATCH] adding algo --- .../contains_duplicate_ii.py | 20 +++++++++++++++++++ .../test_contains_duplicate_ii_round_16.py | 15 ++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 src/my_project/interviews/top_150_questions_round_16/contains_duplicate_ii.py create mode 100644 tests/test_150_questions_round_16/test_contains_duplicate_ii_round_16.py diff --git a/src/my_project/interviews/top_150_questions_round_16/contains_duplicate_ii.py b/src/my_project/interviews/top_150_questions_round_16/contains_duplicate_ii.py new file mode 100644 index 00000000..02ccbafc --- /dev/null +++ b/src/my_project/interviews/top_150_questions_round_16/contains_duplicate_ii.py @@ -0,0 +1,20 @@ +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 \ No newline at end of file diff --git a/tests/test_150_questions_round_16/test_contains_duplicate_ii_round_16.py b/tests/test_150_questions_round_16/test_contains_duplicate_ii_round_16.py new file mode 100644 index 00000000..71ccfc59 --- /dev/null +++ b/tests/test_150_questions_round_16/test_contains_duplicate_ii_round_16.py @@ -0,0 +1,15 @@ +import unittest +from src.my_project.interviews.top_150_questions_round_16\ +.contains_duplicate_ii 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