LeetCode35: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

LeetCode:链接

解题思路:考察的是二分法思想,一定要会!!!!!如果等于中间值的话直接返回,如果小于的话在左边寻找,如果大于的话在右部寻找。

class Solution(object):
    def searchInsert(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: int
        """
        start = 0
        end = len(nums) - 1
        '''二分法 start <= end'''
        while start <= end:
            temp = (start + end) // 2
            if nums[temp] < target:
                '''必须跳过当前值判断 否则会陷入死循环'''
                start = temp + 1
            elif nums[temp] > target:
                '''必须跳过当前值判断 否则会陷入死循环'''
                end = temp - 1
            else:
                return temp
        '''如果没有找到数 就返回start'''
        return start

 

你可能感兴趣的:(LeetCode)