leetcode35_search insert position

-题目

搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
leetcode35_search insert position_第1张图片

- 解法

  • 遍历
    逐个遍历,从左往右挨个查找。

时间复杂度 O(N)
空间复杂度O(1)

  • 二分法
    有序数组用二分法求解
    两个指针 left 和 right ,中间mid = (left+ right)//2,为了防止溢出,mid取 left +(right - left) //2。

时间复杂度 O(logN)
空间复杂度O(1)

python 版本

class Solution(object):
    def searchInsert(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: int
        """
        #没有元素的情况,直接插入元素
        if nums == None or len(nums) == 0:
             return 0
        left, right = 0, len(nums)-1
        while(left<=right):
            mid = int((left +right) / 2)
            if(nums[mid]==target):
                return mid
            elif(nums[mid]>target):
                right = mid-1
            else:
                left = mid+1
        
        return left

你可能感兴趣的:(leetcode35_search insert position)