Leetcode 搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
class Solution {
public int searchInsert(int[] nums, int target) {
int len = nums.length;
int left = 0;
int right = len - 1;
if(nums[right] < target|| len == 0){//特殊情况
return len;
}
//二分法
while(left < right){
int mid = left + (right - left)/2;
if(nums[mid] < target){
left = mid +1;
}else if(nums[mid] == target){
return mid;
}else{
right = mid;
}
}
return right;
}
}
执行结果:
通过
显示详情
执行用时:0 ms, 在所有 Java 提交中击败了100.00% 的用户
内存消耗:39.6 MB, 在所有 Java 提交中击败了33.80% 的用户
二分法的使用前提:表中存储的数据是基本数据类型,表中的数据必须按照从小到大,或者从大到小的顺序排列,才能使用二分法(数据可重复)。
ps:自己一开始想用暴力破解,可是看了下评论都用的二分法,是自己很少练算法的缘故吧,没有使用算法的思维。