给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
示例 1:
- 输入: [1,3,5,6], 5
- 输出: 2
示例 2:
- 输入: [1,3,5,6], 2
- 输出: 1
示例 3:
- 输入: [1,3,5,6], 7
- 输出: 4
示例 4:
- 输入: [1,3,5,6], 0
- 输出: 0
# 思路
分四种情况,借用一下代码随想录的示意图
分为两种方法:暴力法和二分查找法(不得不说这个暴力法太厉害了)
注释部分为常规二分查找法
非注释部分为暴力法
主要是常规二分查找法的return要搞清楚,可以在纸上验算一下
class Solution {
public int searchInsert(int[] nums, int target) {
// int left = 0;
// int right = nums.length - 1;
// int middle = (left + right) / 2;
// while(left <= right){
// if(nums[middle] == target){
// return middle;
// }else if(nums[middle] > target){
// right = middle -1;
// middle = (left + right) / 2;
// }else if(nums[middle] < target){
// left = middle + 1;
// middle = (left + right) / 2;
// }
// }
// return right + 1;
for(int i = 0; i < nums.length ; i++){
if(nums[i] >= target){
return i;
}
}
return nums.length;
}
}