- Notifications
You must be signed in to change notification settings - Fork 40
/
Copy pathSearch_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
*/
classSolution {
publicintsearchInsert(int[] nums, inttarget) {
intindex = -1;
intlow = 0; inthigh = nums.length-1;
intmid = -1;
intresult = -1;
while(low<=high){
mid = low + (high-low)/2;
if(nums[mid]==target) returnmid; //if target is present
elseif(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
}
elselow = mid+1;
}
//if the control is here the target value must not be in nums
if(result==-1) returnnums.length; //No element in nums was greater than target ==> the target is the greatest ==> needs to be added at the end
elsereturnresult;//correct position for target found
}
}