LeetCode 35. Search Insert Position(搜索插入位置)

原题

Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.

You may assume no duplicates in the array.

题目:
给定一个已排序的数组和一个目标值, 如果找到目标, 则返回索引。如果没有, 则返回它按顺序插入的索引。

可以认为数组中没有重复项。

Example 1:

Input: [1,3,5,6], 5
Output: 2

Example 2:

Input: [1,3,5,6], 2
Output: 1

Example 3:

Input: [1,3,5,6], 7
Output: 4

Example 4:

Input: [1,3,5,6], 0
Output: 0

My Solution

方案一

class Solution:
    def searchInsert(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: int
        """
        if not nums:
            return 0
        if target <= nums[0]:
            return 0
        if target > nums[-1]:
            return len(nums)
        
        start = 0
        end = len(nums) - 1
        found = True
        
        while start <= end:
            mid = int((start + end)/2)
            if nums[mid] == target:
                return mid
            if nums[mid] < target:
                start = mid + 1
            if nums[mid] > target:
                end = mid - 1
        if nums[mid] < target:
            return mid + 1
        else:
            return mid

反思:

  1. 看到这种方法先想到怎么使用二分法(效率高,时间复杂度为log(n));

猜你喜欢

转载自blog.csdn.net/Dby_freedom/article/details/82919421