给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
请必须使用时间复杂度为 O(log n) 的算法。
题目要求时间复杂度维O(log n),最先想到的就是折半查找,代码如下:
代码class Solution {
public int searchInsert(int[] nums, int target) {
int len = nums.length;
int minindex=0;
int maxindex=len - 1;
int midindex=0;
//循环开始
while(minindex<=maxindex){
midindex=minindex+maxindex;
if(nums[midindex]==target){
//System.out.println(midindex);
return midindex;
}
//如果中间值大于目标值,减小上标来缩小查找范围;否则增大下标
else if(nums[midindex]>target){
maxindex=midindex-1;
}
else{
minindex=midindex+1;
}
}
//如果不存在,则寻找应该插入的位置
if(nums[midindex]<target){
return midindex+1;
}
else{
return midindex;
}
}
}
提交结果
小结:这是java中的数组问题,属于简单题,主要用到了折半查找
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)