• 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
  • 相关阅读:
    面试总结
    回溯-递归练习题集
    2018年度业余学习总结
    12306余票高效查询--clojure实现
    Mac中wireshark如何抓取HTTPS流量?
    2017年学习总结
    Clojure——学习迷宫生成
    新生帝之2016年的计划,努力去做好!
    EmitMapper
    ASP.NET 修改地址返回图片缩率图
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12725938.html
Copyright © 2020-2023  润新知