From 3bfcd3a13fd6c3617fa20b834ec5646313e26a6d Mon Sep 17 00:00:00 2001 From: jabertuhin Date: Thu, 25 Nov 2021 13:41:05 +0600 Subject: [PATCH 1/3] Add solution for 278-firstBadVersion. --- .../Easy/278_FirstBadVersion/Solution.py | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 Algorithms/Easy/278_FirstBadVersion/Solution.py diff --git a/Algorithms/Easy/278_FirstBadVersion/Solution.py b/Algorithms/Easy/278_FirstBadVersion/Solution.py new file mode 100644 index 0000000..52f221c --- /dev/null +++ b/Algorithms/Easy/278_FirstBadVersion/Solution.py @@ -0,0 +1,23 @@ +# The isBadVersion API is already defined for you. +# @param version, an integer +# @return an integer +# def isBadVersion(version): + +class Solution: + def firstBadVersion(self, n): + """ + :type n: int + :rtype: int + """ + left_version = 1 + right_version = n + + while left_version < right_version: + mid_version = (left_version + right_version)//2 + + if isBadVersion(mid_version): + right_version = mid_version + else: + left_version = mid_version + 1 + + return left_version From fe4d6d20b50fe3af23fa61fb16e663d898866ae6 Mon Sep 17 00:00:00 2001 From: jabertuhin Date: Sat, 4 Jun 2022 13:10:48 +0600 Subject: [PATCH 2/3] Add python solution for 287_FindTheDuplicateNumber --- .../287_FindTheDuplicateNumber/Solution.py | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 Algorithms/Medium/287_FindTheDuplicateNumber/Solution.py diff --git a/Algorithms/Medium/287_FindTheDuplicateNumber/Solution.py b/Algorithms/Medium/287_FindTheDuplicateNumber/Solution.py new file mode 100644 index 0000000..b4c8f5b --- /dev/null +++ b/Algorithms/Medium/287_FindTheDuplicateNumber/Solution.py @@ -0,0 +1,26 @@ +from typing import List + +class Solution: + def _get_count_of_equal_or_less(self, num_arr: List[int], value: int) -> int: + return len([num for num in num_arr if num <= value]) + + + def findDuplicate(self, nums: List[int]) -> int: + left = 1 + right = len(nums) - 1 + + duplicate_number = -1 + + while left <= right: + mid = (left + right)//2 + + equal_or_less_count = self._get_count_of_equal_or_less(num_arr=nums, value=mid) + + if equal_or_less_count > mid: + right = mid - 1 + duplicate_number = mid + else: + left = mid + 1 + + return duplicate_number + \ No newline at end of file From b8938fc2d699541e03ce7881318467e6f87d846c Mon Sep 17 00:00:00 2001 From: jabertuhin Date: Mon, 11 Jul 2022 17:46:16 +0600 Subject: [PATCH 3/3] Remove extra new line. --- Algorithms/Medium/287_FindTheDuplicateNumber/Solution.py | 1 - 1 file changed, 1 deletion(-) diff --git a/Algorithms/Medium/287_FindTheDuplicateNumber/Solution.py b/Algorithms/Medium/287_FindTheDuplicateNumber/Solution.py index b4c8f5b..2794d44 100644 --- a/Algorithms/Medium/287_FindTheDuplicateNumber/Solution.py +++ b/Algorithms/Medium/287_FindTheDuplicateNumber/Solution.py @@ -4,7 +4,6 @@ class Solution: def _get_count_of_equal_or_less(self, num_arr: List[int], value: int) -> int: return len([num for num in num_arr if num <= value]) - def findDuplicate(self, nums: List[int]) -> int: left = 1 right = len(nums) - 1