题目描述
题目要求 O(log n) 的复杂度,第一反应就是 二分查找 这没问题
这道题和普通的二分查找感觉没有区别
public class SearchTarget {
/*
nums 是升序数组,从里边找 target
如果在 nums 里,返回索引
如果不在,返回按顺序插入的位置
必须使用 O(log n) 的算法,二分查找呗?
*/
public static int searchInsert(int[] nums, int target) {
int left = 0;
int right = nums.length - 1;
while (left <= right){
int mid = (left + right) / 2;
if(nums[mid] < target){
left = mid + 1;
}else if (nums[mid] > target){
right = mid - 1;
}if (nums[mid] == target){
return mid;
}
}
return left;
}
public static void main(String[] args) {
int[] nums = {3,8,10,20,25,40};
int target = 40;
System.out.println(searchInsert(nums, target));
}
}
感觉写的不太好 凑合着吧 问题不大