当前位置: 首页 > article >正文

【LeetCode】搜索旋转排序数组[python]

整数数组nums按升序排序,数组中的值互不相同,在传递给函数之前,nums在预先未知的某个下标k上进行了旋转,使数组变为[nums[k],nums[k+1],...,nums[n-1],nums[0],...,nums[k-1]](下标从0开始)。例如[0,1,2,3,4,5,6,7]经下标3处旋转为[4,5,6,7,0,1,2]。

给你旋转后的数组nums和一个整数target,如果nums中存在这个目标值target,返回它的下标,否则返回-1.

eg:输入nums=[4,5,6,7,0,1,2],target=0,输出4.

解题思路:此题基于二分查找,判断中值左右两边序列是否为有序数列(此题为有序数列旋转后,则中值前后必为一段有序数列,且为升序)。故中值与边界值比较大小即可。中值大于左边界值,则左边为有序数列,反之中值小于右边界值。则右边为有序数列。再去判断目标值是否在有序数列中,存在则将中值替换为有序数列边界值,反之替换为无序数列边界值。

class Solution(object):
    def search(self,nums,target):
        l=-1   #基于二分查找,模板,定义左边边界
        r=len(nums)  #定义右边边界
        if len(nums)==1:
            if target==nums[0]:
                return 0
            else:return -1
        while l+1!=r:   #循环判断是否只剩唯一中值
            m=int((l+r//2))
            a = nums[m]
            if a==target:  #中值与目标值进行判断
                return m
            elif a>nums[l]: #中值与目标值不等时,如果中值大于目标边界,说明左边序列有序
                if target<a and target>nums[l]: #再去判断目标值是在[左边界,中值]
                    r=m
                else: l=m
            elif a<nums[r-1]:
                if target>a and target<=nums[r-1]:
                    l=m
                else: r=m
            else:return -1
        return -1


http://www.kler.cn/a/281712.html

相关文章:

  • 无人机航测技术算法概述!
  • 吴恩达深度学习笔记:序列模型(Sequence Models) 1.3-1.4
  • Python小白学习教程从入门到入坑------第三十二课 生成器(语法进阶)
  • 视频融合×室内定位×数字孪生
  • WebRTC 和 WebSocket
  • java8 快捷方式
  • 【Linux】如何用一条命令终止某个后台进程?
  • AI学习记录 - 模型训练中怎么反向传播以及学习率的影响
  • CSS 的font-synthesis属性与中文体验增强
  • 手机号码归属地查询如何用PHP进行调用
  • zoom 会议 javascript 转录例子
  • 第四十篇-TeslaP40+Ollama+Ollama-WebUI(自编译)
  • Python-MNE-源定位和逆问题01:源估计(SourceEstimate)数据结构
  • Nginx 部署前端 Vue 项目全攻略
  • Spring WebFlux – CVE-2023-34034 – 撰写和概念验证
  • Jmeter下载、配置环境变量
  • 【vue3】wangEditor 5在vue3中的使用
  • 【KDD2024】大数据基础工程技术集群异常检测论文入选
  • 【netty系列-08】深入Netty组件底层原理和基本实现
  • stable-diffusion-webui 部署 ,启用 api 服务
  • TPM管理培训究竟需要多少天?完整攻略在此
  • 光伏设计中组串逆变和微型逆变是什么意思?有什么区别?
  • 433 国乒启发式:一切方法的尽头都是本能反应
  • 提升广告效果:Facebook广告投放步骤与实用工具解析
  • GraphRAG论文阅读笔记
  • 构建开发全能型档期预约系统