zoukankan      html  css  js  c++  java
  • Leetcode练习(Python):数组类:第33题:假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。 你可以假设数组中不存在重复的元素。 你

    题目:

    假设按照升序排序的数组在预先未知的某个点上进行了旋转。

    ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。

    搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。

    你可以假设数组中不存在重复的元素。

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

    思路:时间复杂度为 O(log n) 级别,要考虑使用二分法。

    程序:
    class Solution:
        def search(self, nums: List[int], target: int) -> int:
            length = len(nums)
            if length == 0:
                return -1
            if length == 1:
                if nums[0] == target:
                    return 0
                else:
                    return -1
            head = 0 
            tail = length - 1
            while head < length:
                middle = (head + tail) // 2
                if target == nums[middle]:
                    return middle
                elif nums[head] <= nums[middle]:
                    if target >= nums[head] and target < nums[middle]:
                        tail = middle - 1
                    else:
                        head = middle + 1
                else:
                    if target > nums[middle] and target <= nums[tail]:
                        head = middle + 1
                    else:
                        tail = middle - 1
            return -1
  • 相关阅读:
    巡风安装笔记
    泛微ecology OA系统某接口存在数据库配置信息泄露漏洞
    Apache Solr Velocity模板远程代码执行复现
    泛微OA系统多版本存在命令执行漏洞
    各种浏览器UA值
    使用python合并excel
    疑难杂症----udf提权无法导出.dll
    疑难杂症----windows7
    Nmap的使用
    Sqlmap的使用
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12725680.html
Copyright © 2011-2022 走看看