1. 题目
35. 搜索插入位置
2. 描述
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
示例 1:
输入: [1,3,5,6], 5
输出: 2
示例 2:
输入: [1,3,5,6], 2
输出: 1
示例 3:
输入: [1,3,5,6], 7
输出: 4
示例 4:
输入: [1,3,5,6], 0
输出: 0
3. 思路
首先对目标值进行判断,可以分为以下三种情况
若是小于数组最小值,则插入位置索引为 0;
若大于数组最大值,则插入位置索引为 nums.length;
若是介于最大值和最小值之间,则插入位置为 i + 1
此时主要进行判断操作和遍历操作,所以最终时间复杂度为 O ( n ) O(n)O(n).
4. 实现
public int searchInsert(int[] nums, int target) { int index = 0; // 小于最小数,则插入最开始 if (target < nums[0]) { index = 0; } else if (target > nums[nums.length - 1]) { // 大于最大数,则插入最后 index = nums.length; } else { // 介于之间,则插入位置 i + 1 for (int i = 0; i < nums.length; i++) { if (target == nums[i]) { index = i; } else if (target > nums[i] && target < nums[i + 1]) { index = i + 1; } } } return index; }