搜索插入位置

2023-12-13 23:15:24

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

请必须使用时间复杂度为?O(log n)?的算法。

示例 1:

输入: nums = [1,3,5,6], target = 5
输出: 2

示例?2:

输入: nums = [1,3,5,6], target = 2
输出: 1

示例 3:

输入: nums = [1,3,5,6], target = 7
输出: 4

提示:

  • 1 <= nums.length <= 104
  • -104 <= nums[i] <= 104
  • nums?为?无重复元素?的?升序?排列数组
  • -104 <= target <= 104
class Solution:
    def searchInsert(self, nums: List[int], target: int) -> int:
        # 法一:暴力求解
        for i in range(len(nums)):
            if nums[i]==target:#如果目标值在数组
                return i
            elif nums[i-1] < target and target < nums[i] and i<len(nums):#如果目标值不在数组
                return i
            elif target>nums[-1]:
                return len(nums)
            elif target<nums[0]:
                return 0
        # 法二:二分查找
        left,right=0,len(nums)-1
        while left<=right:
            mid=(left+right)//2
            if target==nums[mid]:
                return mid
            elif target<nums[mid]:
                right=mid-1
            else:
                left=mid+1
            return left

文章来源:https://blog.csdn.net/hdnbnsnbns/article/details/134983300
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。