S2 icon indicating copy to clipboard operation
S2 copied to clipboard

0035. Search Insert Position | LeetCode Cookbook

Open halfrost opened this issue 4 years ago • 2 comments

https://books.halfrost.com/leetcode/ChapterFour/0001~0099/0035.Search-Insert-Position/

halfrost avatar Feb 15 '21 03:02 halfrost

func searchInsert(nums []int, target int) int {
	start,end,mid := 0,len(nums)-1,0
	for start <= end{
		mid  = start + (end-start)>>1
		if nums[mid] == target{
			return mid
		}else if nums[mid] < target{
			if mid==len(nums)-1 || (nums[mid+1]>target){
				return mid+1
			}
			start = mid + 1
		}else if nums[mid] > target{
			if mid==0 || (nums[mid-1]<target){
				return mid
			}
			end = mid - 1
		}
	}
	return mid
}

hujun2020 avatar Aug 26 '21 05:08 hujun2020

func searchInsert(nums []int, target int) int {
    left, right := 0, len(nums) - 1
    for left <= right{
        mid := left + (right-left)/2   // 防止溢出 等同于(left+right)/2
        if nums[mid] == target{
            return mid
        }else if nums[mid] > target{    //target 在左区间,所以[left, middle - 1]
            right = mid - 1
        }else{
            left = mid + 1              //target 在右区间,所以[middle + 1, right]
        }
    }
	// 分别处理如下四种情况
	// 目标值在数组所有元素之前  [0, -1]
	// 目标值等于数组中某一个元素  return middle
	// 目标值插入数组中的位置 [left, right],return  right + 1
	// 目标值在数组所有元素之后的情况 [left, right], 因为是右闭区间,所以 return right + 1
    return right + 1
}

chrisliu12138 avatar Aug 16 '22 13:08 chrisliu12138