diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 00000000..30cf57ed --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,10 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Ignored default folder with query files +/queries/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/Binary-Search-1.iml b/.idea/Binary-Search-1.iml new file mode 100644 index 00000000..d6ebd480 --- /dev/null +++ b/.idea/Binary-Search-1.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 00000000..2bfdeda2 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 00000000..1642735e --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 00000000..35eb1ddf --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Problem1.java b/Problem1.java new file mode 100644 index 00000000..9668ebde --- /dev/null +++ b/Problem1.java @@ -0,0 +1,25 @@ +class Problem1 { + public boolean searchMatrix(int[][] matrix, int target) { + int m = matrix.length; + int n = matrix[0].length; + + + int low = 0; + int high = m*n -1; + + while (low <=high) { + int mid = low + (high - low)/2; + int r = mid/n; + int c = mid%n; + if(matrix[r][c] == target) return true; + if(matrix[r][c]>= target) + { + high = mid -1; + } else { + low = mid+1; + } + + } + return false; + } +} \ No newline at end of file diff --git a/Problem2.java b/Problem2.java new file mode 100644 index 00000000..e94a1c23 --- /dev/null +++ b/Problem2.java @@ -0,0 +1,22 @@ +class Problem2 { + + public int search(int[] nums, int target) { + + int low = 0; + int high = nums.length - 1; + while(low <=high) { + int mid = low + (high -low)/2; + if(nums[mid] == target) return mid; + if(nums[mid] >= nums[low]) { + if(nums[mid] > target && target >= nums[low]) { + high = mid -1; + } else low = mid+1; + }else { + if(nums[mid] < target && target <= nums[high]) { + low = mid + 1; + } else high = mid-1; + } + } + return -1; + } +} \ No newline at end of file diff --git a/Problem3.java b/Problem3.java new file mode 100644 index 00000000..fc8a166a --- /dev/null +++ b/Problem3.java @@ -0,0 +1,30 @@ +class Problem3 { + public int search(ArrayReader reader, int target) { + + int low = 0; + int high = 1; + + + while(reader.get(high) <= target) { + low = high; + high = 2*high; + } + + while (low <= high) { + + int mid = low + ((high -low)/2); + + if (reader.get(mid) == target) return mid; + + if(reader.get(mid) > target){ + high = mid -1; + } else { + + low = mid +1; + + } + + } + return -1; + } +} \ No newline at end of file