Lever's Castle

35. 搜索插入位置

January 23, 2019

https://leetcode-cn.com/problems/search-insert-position/

使用语言:Golang

func searchInsert(nums []int, target int) int {
    length := len(nums)
    middleIndex := length / 2
    middle := nums[length / 2]
    if middle == target {
        return middleIndex
    }
    if middle > target {
        if length == 1 {
            return 0
        }
        return searchInsert(nums[:middleIndex], target)
    } else {
        if length == 1 {
            return 1
        }
        return middleIndex + searchInsert(nums[middleIndex:], target)
    }
}

这道题目很简单,有序数组中查找插入位置,最简单的办法就是从头到尾遍历一遍,挨个比大小找到其合适的位置,想要更快一点的话可以用二分查找。

我用递归 + 二分查找解决了这个问题。

先看子问题,即比较当前元素和目标元素的大小。比目标元素大,目标元素在当前元素之前。比目标元素小,目标元素在当前元素之后。

再看边界,当数组的长度为 1 时,比较完大小之后立刻可以得到目标元素位置。


Lever

痕迹
没有过去,就没法认定现在的自己