From 8d3bddc46467e86a2997af4a100abf865cb1fe64 Mon Sep 17 00:00:00 2001 From: ivan Date: Fri, 22 Nov 2024 04:36:34 -0600 Subject: [PATCH] adding contain duplicates --- .../contains_duplicate_ii.py | 20 +++++++++++++++++++ .../test_contains_duplicate_ii_round_11.py | 15 ++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 src/my_project/interviews/top_150_questions_round_11/contains_duplicate_ii.py create mode 100644 tests/test_150_questions_round_11/test_contains_duplicate_ii_round_11.py diff --git a/src/my_project/interviews/top_150_questions_round_11/contains_duplicate_ii.py b/src/my_project/interviews/top_150_questions_round_11/contains_duplicate_ii.py new file mode 100644 index 00000000..a9fb0648 --- /dev/null +++ b/src/my_project/interviews/top_150_questions_round_11/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_11/test_contains_duplicate_ii_round_11.py b/tests/test_150_questions_round_11/test_contains_duplicate_ii_round_11.py new file mode 100644 index 00000000..92cdcee0 --- /dev/null +++ b/tests/test_150_questions_round_11/test_contains_duplicate_ii_round_11.py @@ -0,0 +1,15 @@ +import unittest +from src.my_project.interviews.top_150_questions_round_11\ +.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