题目要求
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
示例 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
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/search-insert-position
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
使用golang实现
暴力解法
全部遍历
func searchInsert(nums []int, target int) int {
for i := 0; i<len(nums); i++{
if nums[i] >= target{
return i
}
}
return len(nums)
}
二分法:
func searchInsert(nums []int, target int) int {
left,right:=0,len(nums)-1
for left<=right {
mid:=left+(right-left)/2
if nums[mid]==target{
return mid
}else if target <nums[mid] {
right=mid-1
}else{
left=mid+1
}
}
return left
}
使用java实现
暴力解法
class Solution {
public int searchInsert(int[] nums, int target) {
for (int i=0;i<nums.length;i++){
if (target==nums[i]){
return i;
}
if (target<nums[i]){
return i;
}
}
return nums.length;
}
}
二分法
class Solution {
public int searchInsert(int[] nums, int target) {
int left = 0;
int right = nums.length-1;
while(left <= right){
int mid = left + (right - left)/2;
if (nums[mid]==target){
return mid;
}else if (target <nums[mid]) {
right=mid-1;
}else{
left=mid+1;
}
}
return left;
}
}