题目描述
给定不同整数的排序数组和目标值,如果找到目标,则返回索引。如果不是,则返回按顺序插入时所在位置的索引。
您必须编写具有O(log n)
运行时复杂性的算法 。
示例1:
输入: nums = [1,3,5,6],目标 = 5
输出: 2
示例2:
输入: nums = [1,3,5,6],目标 = 7
输出: 4
示例3:
输入: nums = [1],目标 = 0
输出: 0
约束:
1 <= nums.length <= 104
-104 <= nums[i] <= 104
nums
包含按升序排序的不同值。-104 <= target <= 104
分析:
首先判断数组的长度是否为零,如果为零,直接返回零。
如果要插入的数据比数组中第一个小,则插入位置就是第一个:如果要插入的数据比数组中最后一个大,则插入位置为最后。
如果要插入的元素与当前元素相同,则掺入当前位置,如果当前位置的元素比要插入的元素大,则插入到当前位置。
代码:
class Solution {
public int searchInsert(int[] nums, int target) {
int len = nums.length;
if(len==0) return 0;
if(target<=nums[0]) return 0;
if(nums[len-1]<target) return len;
for(int i=1;i<nums.length;i++){
if(nums[i]==target){
return i;
}else if(nums[i]>target){
return i;
}
}
return -1;
}
}
本文作者:不期而遇y
版权声明:未经授权禁止使用,转载请说明出处!