标题
搜索插入位置
问题描述
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
题目要求
- 请必须使用时间复杂度为 O(log n) 的算法。
- 1 <= nums.length <= 104
- -104 <= nums[i] <= 104
- nums 为无重复元素的升序排列数组
- -104 <= target <= 104
输入格式1
nums = [1,3,5,6], target = 5
输出格式1
2
输入格式2
nums = [1,3,5,6], target = 2
输出格式2
1
输入格式3
nums = [1,3,5,6], target = 7
输出格式3
4
输入格式4
nums = [1,3,5,6], target = 0
输出格式5
0
输入格式5
nums = [1], target = 0
输出格式4
0
考察内容*
数组
算法
时间复杂度
解题思路*
1.用数组中的每一个元素依次与target比较是否相等,如果相等就返回与target相等的元素下标,没有就执行下一步
2.利用循环每一个元素与target比较大小,如果元素大于target值就返回元素的下标,没有就执行下一步
3.上面两个都判断了说明这个数不在数组中并且比数组中的元素大,所以直接把target放在数组元素后面,直接输出数组长度。
核心代码*
class Solution {
public int searchInsert(int[] nums, int target) {
int len = nums.length;
for (int i = 0; i < len; i++) {
if (nums[i] == target) {
return i;
}
}
for (int i = 0; i < len; i++) {
if (nums[i] > target) {
return i;
}
}
return len;
}
}
完成情况*
已完成
备注
无