Question
Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.
You may assume no duplicates in the array.
Here are few examples.
[1,3,5,6], 5 → 2
[1,3,5,6], 2 → 1
[1,3,5,6], 7 → 4
[1,3,5,6], 0 → 0
Idea
给定一个已经排序的数组和目标值,存在,则返回目标值的索引;否则,返回应插入该数组的位置索引。
对于一个已经排序过的数组进行查找,则使用binary search较为常用。
Code
Binary Search—
Java
- Java中,对于一个array,length是其属性,不是方法,使用:
nums.length
.
- Java中,对于一个array,length是其属性,不是方法,使用:
public class Solution {
public int searchInsert(int[] nums, int target) {
int low = 0, high = nums.length-1;
while(low <= high){
int mid = (low + high)/2;
if (nums[mid] == target) return mid;
else if (nums[mid] > target) high = mid-1;
else low = mid+1;
}
return low;
}
}
- 时间复杂度:O(lgn);空间复杂度:O(1)