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,3,5,6], 5 → 2
[1,3,5,6], 2 → 1
[1,3,5,6], 7 → 4
[1,3,5,6], 0 → 0
Solution:
public int searchInsert(int[] A, int target) {
if (A == null || A.length == 0) {
return 0;
}
int start = 0;
int end = A.length - 1;
int mid;
while(start + 1 < end) {
mid = start + ((end - start) >> 1);
if(target < A[mid]) {
end = mid;
} else if (target == A[mid]) {
return mid;
} else {
start = mid;
}
}
if(target <= A[start]) {
return start;
} else if(target <= A[end]) {
return end;
} else {
return end + 1;
}
}
思路:
1. 搜索用BS
2. 数组中没有重复数字,mid命中就跳出循环。start 与 end相邻,有3个可能的位置。
本文介绍了一个简单的二分搜索算法,用于在已排序的数组中找到指定目标值的插入位置。该算法适用于没有重复元素的情况,并提供了完整的代码实现及运行示例。
455

被折叠的 条评论
为什么被折叠?



