• 34.在排序数组中查找元素的第一个和最后一个位置 二分法


    本题解法照抄王尼玛的解答

     https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array/solution/duo-tu-yan-shi-34-zai-pai-xu-shu-zu-zhong-cha-zhao/

    思路:

      1. 当一道题出现了 排序数组+搜索 或者 排序数组+log(n)的时候,我们的第一反应肯定是二分法

    难点:

      1. 用 log(n) 找到target没问题 ,关键是如何用log(n)找到其他两个端点。

    关键操作:

      1. 在用循环找到了target之后,不要返回该下标,继续二分查找端点下标,直到找到

        1)边界  0 或  len(nums)-1

        2)  左端点左边 != target 或者  右端点右边 != target

        3)  一般二分法循环如下:

        l = 0

        r = len(nums)-1

        while l <= r : 

          mid = l + (r-l)//2

          if nums[ mid ] < target: 

            l = mid+1

          elif nums[ mid ] > target:

            r = mid -1 

          else:

            return mid 

    代码:

      

    class Solution:
        def searchRange(self, nums: List[int], target: int) -> List[int]:
            if not nums: return [-1,-1]
            def get_points(direction): 
                l = 0
                r = len(nums)-1
                while l<=r:
                    mid = l + (r-l)//2
                    if nums[mid]>target:
                        r = mid-1
                    elif nums[mid]<target:
                        l = mid+1
                    else:
                        if direction == 'left':
                            if mid>0 and nums[mid] == nums[mid-1]:
                                r = mid-1
                            else:
                                return mid

                        else:
                            if mid<len(nums)-1 and nums[mid] == nums[mid+1]:
                                l = mid+1
                            else:
                                return mid
                return -1
            return [get_points('left'),get_points('right')]
  • 相关阅读:
    WordPress手机端插件——WPtouch
    WordPress404页面自定义
    WordPress浏览数插件的安装使用
    WordPress的SEO插件——WordPress SEO by yoast安装及使用
    WordPress友情链接插件的安装
    各大搜索引擎提交入口
    thinkphp博客项目纪录
    新概念英语第一册——视频
    ThinkPHP自定义错误页面、成功页面及异常页面
    豪情后台模板,图标大全
  • 原文地址:https://www.cnblogs.com/ChevisZhang/p/12888037.html
Copyright © 2020-2023  润新知