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 :
Example1
Input: [1, 3, 5, 6], 5
Output: 2Example 2:
Input: [1, 3, 5, 6], 2
Output: 1Example 3:
Input: [1, 3, 5, 6], 7
Output: 4Example 1:
Input: [1, 3, 5, 6], 0
Output: 0
代码实现:
版本一:
Runtime:7ms
时间维度:O(n) -> 时间随数组的增大线性增长。
class Solution {
public int searchInsert(int[] nums, int target) {
int index = 0;
for (int i=0, len=nums.length; i<len; i++) {
if (i == len-1 && target > nums[i]) {
index = i+1;
break;
}
if (target <= nums[i]) {
index = i;
break;
}
}
return index;
}
}
版本二:参考二分法查询的思路,减少遍历的次数
int start = 0;
int end = nums.length-1;
while(start<=end) {
int mid = (end + start) / 2;
if(nums[mid]<target) {
start = mid + 1;
} else if(nums[mid]>target) {
end = mid - 1;
} else
return mid;
}
return start;