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


    题目:

    给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。

    你的算法时间复杂度必须是 O(log n) 级别。

    如果数组中不存在目标值,返回 [-1, -1]。

    思路:二分法,使用一个指针来找到数字的开头和结尾位置

    程序:

    class Solution:
        def searchRange(self, nums: List[int], target: int) -> List[int]:
            result = [-1,-1]
            length = len(nums)
            head = 0
            tail = length - 1
            while head < tail:
                middle = (head + tail) // 2
                if target > nums[middle]:
                    head = middle + 1
                else:
                    tail = middle
            if nums[head] != target:
                return result
            result[0] = head
            tail = length - 1
            while head <= tail:
                middle = (head + tail) // 2
                if target >= nums[middle]:
                    head = middle + 1
                else:
                    right = middle
            result[1] = head - 1
            return result
  • 相关阅读:
    模型层
    视图层,模板层
    ORM表关系建立
    CMakeList入门
    C++标准模板库
    C++基本语法
    g++应用说明
    Linux快捷键
    Git 操作备忘
    Block的详细介绍
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12725938.html
Copyright © 2020-2023  润新知