-
Notifications
You must be signed in to change notification settings - Fork 33
/
Search_Insert_Position.java
52 lines (37 loc) · 1.49 KB
/
Search_Insert_Position.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
//Leetcode 35. Search Insert Position
//Question - https://leetcode.com/problems/search-insert-position/
/*Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.
You may assume no duplicates in the array.
Example 1:
Input: [1,3,5,6], 5
Output: 2
Example 2:
Input: [1,3,5,6], 2
Output: 1
Example 3:
Input: [1,3,5,6], 7
Output: 4
Example 4:
Input: [1,3,5,6], 0
Output: 0
*/
class Solution {
public int searchInsert(int[] nums, int target) {
int index = -1;
int low = 0; int high = nums.length-1;
int mid = -1;
int result = -1;
while(low<=high){
mid = low + (high-low)/2;
if(nums[mid]==target) return mid; //if target is present
else if(nums[mid]>target){
result = mid; //store the latest mid ==> this could be the first occurrence of least element greater than target
high = mid - 1; //push algorithm to left in hopes to find first occurrence of least element greater than target OR to find the target itself
}
else low = mid+1;
}
//if the control is here the target value must not be in nums
if(result==-1) return nums.length; //No element in nums was greater than target ==> the target is the greatest ==> needs to be added at the end
else return result;//correct position for target found
}
}