letcode刷题笔记(5)—— 搜索插入位置(简单)
题目
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
一、解题思路
可以暴力解题,也可以使用二分查找解题
二、具体代码
package letcode.day3;
/**
* @author 搜索插入位置(简单)
* 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
*
* 你可以假设数组中无重复元素。
* 时间复杂度O(logN)
* 空间复杂度O(1)
*/
public class SearchInsert {
public static void main(String[] args) {
int arr[] = {1,2,3,4,6} ;
int temp = 5;
System.out.println(searchHalfInsert(arr,temp));
}
static int searchInsert(int[] nums, int temp) {
int res = 0 ;
for (int n = 0 ; n <nums.length ;n++){
if (temp == nums[n]){
res = n+1 ;
break;
}
if (temp > nums[n]){
res = n+1;
}
}
return res;
}
static int searchHalfInsert(int[] nums, int temp) {
int res = 0 ;
int left = 0 ,right = nums.length - 1;
while (left <= right){
int mid = (right-left) / 2 +left;
if (temp > nums[mid]){
left = mid + 1 ;
}else {
right = mid -1 ;
res = mid ;
}
}
return res;
}
}