Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 47 additions & 0 deletions problem1Solution.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
//Find First and Last position of Element in Sorted Array
//Time Complexity : O(log n)
//Space Complexity : O(1)

public class problem1Solution {
private int firstSearch(int low, int high, int[] nums, int target) {
while(low<=high) {
int mid = low + (high - low)/2;
if(nums[mid] == target) {
if(mid == 0 || nums[mid] > nums[mid-1]) return mid;
else {
high = mid - 1;
}
} else if (nums[mid] > target) {
high = mid -1;
} else {
low= mid + 1;
}
}
return -1;
}

private int lastSearch(int low, int high, int[] nums, int target) {
while(low<=high) {
int mid = low + (high - low)/2;
if(nums[mid] == target) {
if(mid == nums.length-1 || nums[mid] < nums[mid+1]) return mid;
else {
low = mid + 1;
}
} else if (nums[mid] > target) {
high = mid -1;
} else {
low = mid + 1;
}
}
return -1;
}

public int[] searchRange(int[] nums, int target) {
int n = nums.length;
int first = firstSearch(0, n-1, nums,target);
if(first == -1) return new int[]{-1,-1};
int last = lastSearch(first, n-1, nums, target);
return new int[]{first,last};
}
}
24 changes: 24 additions & 0 deletions problem2Solution.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
//Find Minimum in Rotated Sorted Array
//Time Complexity : O(log n)
//Space Complexity : O(1)

public class problem2Solution {
public int findMin(int[] nums) {
int low = 0;
int high = nums.length-1;
int result = Integer.MAX_VALUE;
while(low<=high){
if(nums[low] <= nums[high]) return nums[low];
int mid = low + (high - low)/2;
System.out.print("mid" + mid);
if(mid > 0 && nums[mid] < nums[mid-1] && nums[mid]<nums[mid+1]) return nums[mid];
if(nums[low] <= nums[mid]) {
low = mid +1;
}
else {
high = mid - 1;
}
}
return result;
}
}
18 changes: 18 additions & 0 deletions problem3Solution.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
//Find Peak Element
//Time Complexity : O(log n)
//Space Complexity : O(1)

public class problem3Solution {
public int findPeakElement(int[] nums) {
int low = 0;
int high = nums.length-1;

while(low<=high) {
int mid = low + (high - low)/2;
if((mid==0 || nums[mid] > nums[mid-1]) && (mid== nums.length-1 || nums[mid] > nums[mid+1])) return mid;
if(nums[mid+1] > nums[mid]) low = mid + 1;
else high = mid - 1;
}
return -1;
}
}