zoukankan      html  css  js  c++  java
  • 35. 搜索插入位置

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

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

    示例 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

    方法1:
    用python内置函数:append,sort,index
    先插入,再重新排序,最后查找index

    1 class Solution:
    2     def searchInsert(self, nums: List[int], target: int) -> int:
    3         nums.append(target)
    4         nums.sort()
    5         return nums.index(target)

    有个可能的bug是如果target存在的话,nums列表中是会有两个target的
    如果题目有这个要求,就再pop掉好了

    方法2:

    二分查找法

     1 class Solution:
     2     def searchInsert(self, nums: List[int], target: int) -> int:
     3         if target>nums[-1]:
     4             return len(nums)
     5         l,r=0,len(nums)-1
     6         ans=-1
     7         while l<=r:
     8             mid=(l+r)//2
     9             if target<=nums[mid]:
    10                 r=mid-1
    11                 ans=mid
    12             else:
    13                 l=mid+1
    14                 # ans=mid-1
    15         return ans
  • 相关阅读:
    剑指Offer--反转链表
    剑指Offer--链表中倒数第k个结点
    面向对象的六原则一法则
    常见错误汇总
    记人生第一次CF体验
    Game of Credit Cards
    Shell Game (模拟)
    数列分块入门 1 LibreOJ
    范德蒙恒等式
    C. Vasya and String (尺取法)
  • 原文地址:https://www.cnblogs.com/hly97/p/13276588.html
Copyright © 2011-2022 走看看