3.4 Search Insert Position搜索插入位置

在线题测:https://www.lintcode.com/problem/search-insert-position/description

在线题解:https://www.jiuzhang.com/solution/search-insert-position/

60.搜索插入位置

给定一个排序数组和一个目标值,如果在数组中找到目标值则返回索引。如果没有,返回到它将会被按顺序插入的位置。

你可以假设在数组中无重复元素。

样例

[1,3,5,6],5 → 2

[1,3,5,6],2 → 1

[1,3,5,6], 7 → 4

[1,3,5,6],0 → 0

挑战

时间复杂度为O(log(n))

代码 更新如下:

class Solution:
    """
    @param A : a list of integers
    @param target : an integer to be inserted
    @return : an integer
    """
    def searchInsert(self, A, target):
        if len(A) == 0:
            return 0

        start, end = 0, len(A) - 1
        # first position >= target
        while start + 1 < end:
            mid = (start + end) / 2
            if A[mid] >= target:
                end = mid
            else:
                start = mid

        if A[start] >= target:
            return start
        if A[end] >= target:
            return end
        return len(A)

results matching ""

    No results matching ""