zoukankan      html  css  js  c++  java
  • LeetCode 34.在排序数组中查找元素的第一个和最后一个位置

    给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置
    你的算法时间复杂度必须是 O(log n) 级别
    如果数组中不存在目标值,返回 [-1, -1]。

    示例 1:
    输入: nums = [5,7,7,8,8,10], target = 8
    输出: [3,4]

    示例 2:
    输入: nums = [5,7,7,8,8,10], target = 6
    输出: [-1,-1]

    class Solution:
        def searchRange(self, nums: List[int], target: int) -> List[int]:
            if not nums:
                return [-1,-1]
            start = 0
            end = len(nums)-1
            while start + 1 < end:
                mid = start + int((end-start)/2)
                mid_num = nums[mid]
                if mid_num < target:
                    start = mid
                elif mid_num > target:
                    end = mid
                elif mid_num == target:
                    if nums[end] > target:
                        end -= 1
                    if nums[start] < target:
                        start += 1
                    if nums[start] == target and nums[end] == target:
                        return [start,end]
    
            if nums[start]!=target and nums[end]!=target:
                return [-1,-1]
            elif nums[start]!=target :
                start += 1
            elif nums[end]!=target:
                end -= 1
            return [start,end]
    
  • 相关阅读:
    搞懂树状数组
    C#接口(Interface)
    C#接口(Interface)
    C#运算符的重载
    C#和C++的区别(一)
    hdu1874 畅通工程续
    hdu1874 畅通工程续
    C#多态性
    C#多态性
    C#继承
  • 原文地址:https://www.cnblogs.com/sandy-t/p/13285144.html
Copyright © 2011-2022 走看看