leetcode35 搜索插入位置

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

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

示例 1:

输入: [1,3,5,6], 5
输出: 2
示例 2:

输入: [1,3,5,6], 2
输出: 1
示例 3:

输入: [1,3,5,6], 7
输出: 4
示例 4:

输入: [1,3,5,6], 0
输出: 0

题目就是这样,很简单的一道搜索题,追求速度的话直接上二分,代码如下

class Solution(object):
    def searchInsert(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: int
        """
        if len(nums) == 0:
            return 0
        
        i, j = 0, len(nums)-1
        mid = (i + j) // 2
        while i <= j:
            mid = (i + j) // 2
            if nums[mid] == target:
                return mid
            elif nums[mid] > target:
                j = mid - 1
            else:
                i = mid + 1
        if nums[mid] >= target:
            return mid
        else:
            return mid+1

但是既然使用python,我们就pythonic一点,写一点简洁的代码

class Solution(object):
    def searchInsert(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: int
        """
        if target in nums:
            return nums.index(target)
        elif target<=nums[0]:
            return 0
        else:
            for i in range(len(nums)-1):
                if nums[i]<=target<=nums[i+1]:
                    return nums.index(nums[i]) + 1
            return len(nums)
```
原文地址:https://www.cnblogs.com/yfc0818/p/11072631.html