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