首页 > 编程语言 >python 搜索旋转排序数组 多种解法

python 搜索旋转排序数组 多种解法

时间:2024-01-16 10:31:46浏览次数:32  
标签:right return target nums python mid 排序 解法 left

  1. 二分查找: 旋转排序数组中仍然可以应用二分查找算法。首先,我们找到数组中最小的元素的索引,也就是旋转点的位置。然后,我们根据目标值与旋转点的大小关系,在旋转点的左侧或右侧进行常规的二分查找。
def search(nums, target):
    # 寻找旋转点
    left, right = 0, len(nums) - 1
    while left < right:
        mid = (left + right) // 2
        if nums[mid] > nums[right]:
            left = mid + 1
        else:
            right = mid
    
    # 二分查找目标值
    start = left
    left, right = 0, len(nums) - 1
    if target >= nums[start] and target <= nums[right]:
        left = start
    else:
        right = start
    
    while left <= right:
        mid = (left + right) // 2
        if nums[mid] == target:
            return mid
        elif nums[mid] < target:
            left = mid + 1
        else:
            right = mid - 1
    
    return -1
  1. 直接遍历: 如果数组长度较小,也可以直接遍历整个数组来寻找目标值。
def search(nums, target):
    for i in range(len(nums)):
        if nums[i] == target:
            return i
    return -1
  1. 利用Python的内置函数: Python提供了一些内置函数,如index()in操作符,可以方便地进行元素搜索。
def search(nums, target):
    if target in nums:
        return nums.index(target)
    else:
        return -1

标签:right,return,target,nums,python,mid,排序,解法,left
From: https://blog.51cto.com/lzning/9267762

相关文章

  • 提高代码效率的6个Python内存优化技巧
    当项目变得越来越大时,有效地管理计算资源是一个不可避免的需求。Python与C或c++等低级语言相比,似乎不够节省内存。但是其实有许多方法可以显著优化Python程序的内存使用,这些方法可能在实际应用中并没有人注意,所以本文将重点介绍Python的内置机制,掌握它们将大大提高Python编程技能......
  • Python 异步编程原理篇之新旧协程实现对比
    协程的发展流程再来回顾一下协程的发展流程:python2.5为生成器引用.send()、.throw()、.close()方法python3.3为引入yieldfrom,可以接收返回值,可以使用yieldfrom定义协程Python3.4加入了asyncio模块Python3.5增加async、await关键字,在语法层面的提供支持python3.7使用......
  • python爬虫利器之Playwright
    Playwright是微软在2020年初开源的新一代自动化测试工具,它的功能类似于Selenium、Pyppeteer等,都可以驱动浏览器进行各种自动化操作。它的功能也非常强大,对市面上的主流浏览器都提供了支持,API功能简洁又强大。虽然诞生比较晚,但是现在发展得非常火热。1.Playwright的特点......
  • Python第四天学习笔记
    Python的用户交互input('请插入vip卡')input('输入密码')请插入vip卡23333输入密码6666'6666'print('*'*100)****************************************************************************************************print('*'......
  • python网站创建016:BootStrap
    什么是BootStrap?:是一个别人写好的javascript和css的代码,如果在开发项目的时候省点事,就可以在它的基础上来修改使用使用教程:https://www.runoob.com/bootstrap/bootstrap-tutorial.html下载:https://getbootstrap.net/   下载之后解压,解压之后可以随意打开一个文件,比如cs......
  • python中json.dumps() 与json.dump(),json.load()与json.loads()区别?
    json.dumps()将Python对象转换为JSON字符串,并返回该字符串。而json.dump()将Python对象转换为JSON字符串,并将该字符串写入文件。json.dumps()接受一个Python对象作为参数,而json.dump()接受两个参数:一个Python对象和一个写入数据的文件对象。json.dump()生......
  • Python 中read()、 readline() 、readlines()三者之间的区别?
    read()方法用于一次性读取整个文件的内容,并将其作为一个字符串返回。readline()方法用于逐行读取文件的内容。每次调用readline()方法,它会读取文件的下一行,并将其作为一个字符串返回。readlines()方法用于将文件的所有行读取到一个列表中。每一行都是列表中的一个元素,列表按照文......
  • 深入了解 Python MongoDB 操作:排序、删除、更新、结果限制全面解析
    PythonMongoDB排序对结果进行排序使用sort()方法对结果进行升序或降序排序。sort()方法接受一个参数用于“字段名”,一个参数用于“方向”(升序是默认方向)。示例按名称按字母顺序对结果进行排序:importpymongomyclient=pymongo.MongoClient("mongodb://localhost:270......
  • Python第三天学习笔记
    执行Python的两种形式第一种:交互式,在cmd中运行优点:直接给出结果缺点:无法保存jupyter对这一种进行了封装第二种:命令行式,通过cmd中输入Python3文本.txt文件可以,.py文件也可以,命令行式可以识别任何文本文件优点:可以保存缺点:无法及时得到报错反馈1.2.1三个步骤编写Py......
  • 数学建模入门笔记(1)——Python pulp库解线性规划问题
    参考:Python求解线性规划——PuLP使用教程-Only(AR)-博客园(cnblogs.com)1.Definethemodelmodel=pl.LpProblem(name="",sense=pl.LpMaximize)name模型的名字sense模型的类型(pl.LpMaximize/pl.LpMinimize)2.Definethedecisionvariables用x[i]存储变量,命名为xi......