1.题目描述

35. 搜索插入位置

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

你可以假设数组中无重复元素。

示例 1:

1
2
输入: [1,3,5,6], 5
输出: 2

示例 2:

1
2
输入: [1,3,5,6], 2
输出: 1

示例 3:

1
2
输入: [1,3,5,6], 7
输出: 4

示例 4:

1
2
输入: [1,3,5,6], 0
输出: 0

2.代码描述

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class Solution {
public int searchInsert(int[] nums, int target) {
//划分范围的index
int leftIndex = 0;
int rightIndex = nums.length-1;

while(leftIndex != rightIndex){
//分
int middle = (leftIndex+rightIndex) / 2;

//判断在分开的左边还是右边
if (nums[middle] >= target){
//左边 不-1是因为middle可能是解
rightIndex = middle;
}else {
//右边
leftIndex = middle+1;
}
}

//判断如何插入
// if (nums[leftIndex] >= target){
// //leftIndex--;
// }else {
// leftIndex++;
// }
if (nums[leftIndex] < target){
leftIndex++;
}

return leftIndex;
}
}