[leetcode:python]35.Search Insert Position

来源:互联网 发布:淘宝服装店铺简介范文 编辑:程序博客网 时间:2024/06/13 08:50

题目:查询插入位置
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.
题意:
给定一个有序数组&一个值。如果这个值存在于数组中,返回它的索引,否则返回它应该插入的位置。假设这个数组无重复。

Here are few examples.
[1,3,5,6], 5 → 2
[1,3,5,6], 2 → 1
[1,3,5,6], 7 → 4
[1,3,5,6], 0 → 0

方法一:性能56ms

class Solution(object):    def searchInsert(self, nums, target):        """        :type nums: List[int]        :type target: int        :rtype: int        """        if len(nums) == 0:            return 0        for i in range(len(nums)):            if target < nums[i]:                nums.insert(0,target)                return 0            elif target == nums[i]:                return i            elif i < len(nums)-1 and target > nums[i] and target < nums[i+1]:                nums.insert(i+1, target)                return i+1            elif i == len(nums) - 1:                nums.append(target)                return len(nums) - 1

方法二:性能35ms

class Solution(object):    def searchInsert(self, nums, target):        n = len(nums)        if n == 0 or target <= nums[0]: return 0        if target > nums[n-1]: return n        left, right = 0, n-1        while left < right:            mid = (left+right)//2            if target == nums[mid]: return mid            if target > nums[mid]: left = mid+1            else: right = mid-1        if target > nums[left]: return left+1        else: return left

其中// 表示取整除法

0 0
原创粉丝点击