diff --git a/Problem_1.py b/Problem_1.py new file mode 100644 index 00000000..9c788f73 --- /dev/null +++ b/Problem_1.py @@ -0,0 +1,23 @@ +# // Time Complexity : O(log nm) nxm is shape of matrix +# // Space Complexity : O(1) + +class Solution: + + + def searchMatrix(self, matrix: List[List[int]], target: int) -> bool: + n = len(matrix) + m = len(matrix[0]) + low=0 + high=m*n-1 + while(low<=high): + mid = low + (high-low)//2 + i = mid//m + j = mid%m + + if(matrix[i][j] == target): + return True + elif(matrix[i][j] > target): + high = mid-1 + else: + low = mid+1 + return False \ No newline at end of file diff --git a/Problem_2.py b/Problem_2.py new file mode 100644 index 00000000..248c84cf --- /dev/null +++ b/Problem_2.py @@ -0,0 +1,27 @@ +# // Time Complexity : O(log n) +# // Space Complexity : O(1) + +class Solution: + def search(self, nums: List[int], target: int) -> int: + if(len(nums) == 0): + return -1 + + low = 0 + high = len(nums) - 1 + + while(low<=high): + mid = low + (high-low)//2 + print(mid) + if(nums[mid] == target): + return mid + elif(nums[mid] >= nums[low]): + if(target < nums[mid] and target >= nums[low]): + high = mid-1 + else: + low = mid+1 + else: + if(target > nums[mid] and target <= nums[high]): + low = mid+1 + else: + high = mid-1 + return -1 \ No newline at end of file diff --git a/Problem_3.py b/Problem_3.py new file mode 100644 index 00000000..1ebfd1b7 --- /dev/null +++ b/Problem_3.py @@ -0,0 +1,32 @@ +# """ +# This is ArrayReader's API interface. +# You should not implement it, or speculate about its implementation +# """ +#class ArrayReader: +# def get(self, index: int) -> int: + +class Solution: + def search(self, reader: 'ArrayReader', target: int) -> int: + + low = 0 + high = 1 + + while (target > reader.get(high)): + low = high + high = low * 2 + + return self.getTargetIndex(reader,target,low,high) + + def getTargetIndex(self,reader,target,low,high): + + while(low <= high): + + mid = low + (high - low)//2 + + if(reader.get(mid) == target): + return mid + elif(reader.get(mid) > target): + high = mid - 1 + else: + low = mid + 1 + return -1