zoukankan      html  css  js  c++  java
  • 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')]
  • 相关阅读:
    datagridview 保存为excel输出
    将excel导入到datatable
    Json 转换为c#数组
    css 没有图片则隐藏或者显示默认图片
    模拟Get请求
    根据多个字符分隔字符串
    DbHelperSQL
    数据库相关
    json对象
    ajax滚动条懒加载
  • 原文地址:https://www.cnblogs.com/ChevisZhang/p/12888037.html
Copyright © 2011-2022 走看看