diff --git a/Problem_1.py b/Problem_1.py new file mode 100644 index 00000000..1ac4909e --- /dev/null +++ b/Problem_1.py @@ -0,0 +1,45 @@ +class Solution: + def getFirst(self, low, high, target, nums): + ans = -1 + while low <= high: + mid = low + (high - low) // 2 + curr = nums[mid] + if curr == target: + ans = mid + high = mid - 1 + elif target < curr: + high = mid - 1 + else: + low = mid + 1 + return ans + + def getLast(self, low, high, target, nums): + ans = -1 + while low <= high: + mid = low + (high - low) // 2 + curr = nums[mid] + if curr == target: + ans = mid + low = mid + 1 + elif target < curr: + high = mid - 1 + else: + low = mid + 1 + return ans + + def searchRange(self, nums, target): + n = len(nums) + low, high = 0, n - 1 + ans = [-1, -1] + ans[0] = self.getFirst(low, high, target, nums) + if ans[0] == -1: + return ans + ans[1] = self.getLast(low, high, target, nums) + return ans + + + +nums = [5,7,7,8,8,10] +target = 8 +sl = Solution() +print(sl.searchRange(nums,target)) \ No newline at end of file diff --git a/Problem_2.py b/Problem_2.py new file mode 100644 index 00000000..a7f61137 --- /dev/null +++ b/Problem_2.py @@ -0,0 +1,24 @@ +import math + +class Solution: + def findMin(self, nums): + n = len(nums) + low,high = 0, n-1 + ans = math.inf + while low <= high: + mid = low + (high-low)//2 + curr = nums[mid] + if nums[low] <= curr: + ans = min(ans,nums[low]) + low = mid + 1 + else: + ans = min(ans,curr) + high = mid - 1 + return ans + + + +# nums = [3,4,5,1,2] +nums = [2,1] +sl = Solution() +print(sl.findMin(nums)) \ No newline at end of file diff --git a/Problem_3.py b/Problem_3.py new file mode 100644 index 00000000..18dcfbe6 --- /dev/null +++ b/Problem_3.py @@ -0,0 +1,18 @@ +class Solution: + def findPeakElement(self, nums): + n = len(nums) + low,high = 0, n-1 + while low <= high: + mid = low + (high - low)//2 + curr = nums[mid] + if (mid == 0 or nums[mid-1] < curr) and (mid == n-1 or nums[mid+1] < curr): + return mid + if nums[mid-1] < curr: + low = mid + 1 + else: + high = mid - 1 + return -1 + +nums = [1,2,1,3,5,6,4] +sl = Solution() +print(sl.findPeakElement(nums))