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

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

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

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

    思路

    • python的list是有index()方法的,如果目标值在数组中就很简单
    • 如果没有的话就从头线性扫描一遍,当然更好的做法是二分找位置

    代码

    class Solution:
        def searchInsert(self, nums: List[int], target: int) -> int:
            try:
                index_value = nums.index(target)
                return index_value
            except:
                length = len(nums)
                for i in range(length):
                    if nums[i] > target and i > 0:
                        return i
                    if nums[i] > target and i == 0:
                        return 0
                    if nums[i] < target and i == length-1:
                        return length
    
    # 二分法
    class Solution:
        def searchInsert(self, nums: List[int], target: int) -> int:
            length = len(nums)
            if length == 0:
                return 0
            left = 0
            right = length
    
            while left < right:
                mid = (left + right) // 2
                if nums[mid] < target:     # 此时已经排除mid位置是答案的可能性
                    left = mid + 1
                else:
                    right = mid
            return left  
    

    精选题解里有教二分法模板,说的很棒,强烈推荐


    注明

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/search-insert-position

  • 相关阅读:
    discuz $_G变量
    php & 引用
    discuz模板引擎
    nginx正则表达式
    linux系统安装 dig和nslookup命令
    linux中的各种$号 位置参数变量
    memcache图形管理工具
    mysql 注入问题
    pycharm 连接mysql失败
    Bootstrap 常用网站
  • 原文地址:https://www.cnblogs.com/MartinLwx/p/11516716.html
Copyright © 2011-2022 走看看