题目
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
请必须使用时间复杂度为 O(log n) 的算法
题解(个人)
思路
除了最普通的target元素直接插入,由于题目中已规定无重复升序数组,因此其他可以分为两种插入类型:
- 如果target>nums[i],则在索引位置为i+1处插入元素
- 如果target<nums[0],则索引位置直接返回0
代码
class Solution {
public int searchInsert(int[] nums, int target) {
int num=0;
for (int i = 0; i < nums.length; i++) {
if(nums[i]==target){
return num=i;
}else if(target>nums[i]){
num++;
}
}
return num;
}
}
题解(官方)
思路
二分法
代码
class Solution {
public int searchInsert(int[] nums, int target) {
}
}