leetcode-33搜索旋转排序数组(二分)[通俗易懂]

leetcode-33搜索旋转排序数组(二分)[通俗易懂]整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2] 。给你 旋转后 的数组 nums 和一个整数 ta

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

整数数组 nums 按升序排列,数组中的值 互不相同 。

在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2] 。

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

示例 1:

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

输入:nums = [4,5,6,7,0,1,2], target = 3
输出:-1
示例 3:

输入:nums = [1], target = 0
输出:-1
 

提示:

1 <= nums.length <= 5000
-10^4 <= nums[i] <= 10^4
nums 中的每个值都 独一无二
题目数据保证 nums 在预先未知的某个下标上进行了旋转
-10^4 <= target <= 10^4
 

进阶:你可以设计一个时间复杂度为 O(log n) 的解决方案吗?

题解
二分,如果左边有序并且target在范围内,则…否则…

class Solution { 
   
public:
    int search(vector<int>& nums, int target) { 
   
        int l = 0,r = nums.size() - 1;
        while(l < r){ 
   
            int mid = (l + r) >> 1;
            if(nums[mid] >= nums[l] && target <= nums[mid] && target >= nums[l]){ 
   
                r = mid;
            }else if(nums[mid] >= nums[l]){ 
   
                l = mid + 1;
            }
            else if(nums[mid + 1] <= nums[r] && target <= nums[r] && target >= nums[mid + 1]){ 
   
                l = mid + 1;
            }
            else r = mid;
        }
        if(nums[l] != target)return -1;
        return l;
    }
};
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168722.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月8日 下午3:46
下一篇 2022年8月8日 下午4:00


相关推荐

  • Egret 定时器

    Egret 定时器定时器 demomodulega exportclassT DisplayObjec privatecount number 0 publicconstr super vartimer eg

    2026年3月18日
    2
  • Modelsim-win32-6.6d 破解安装教程

    Modelsim-win32-6.6d 破解安装教程1、准备文件  modelsim-win32-6.6d-se.exe 2、安装步骤·(安装前把杀毒软件关闭)双击文件 modelsim-win32-6.6d-se.exe(注:安装路径不要有中文)点击Next 点击Browser ,建议安装目录改成自己新建在D盘下  点击Next—-&gt;Agree —–&gt;等待安装 安…

    2022年5月10日
    65
  • 安装keil5时,注册机在解压后消失的解决以及使用注册机破解keil5时,无法破解

    安装keil5时,注册机在解压后消失的解决以及使用注册机破解keil5时,无法破解这里写自定义功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入全新的界面设计,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,Markdown将代码片显示选择的高亮样式进行展示;增加了图片拖拽功能,你可以

    2022年6月2日
    113
  • python程序化交易实例-用 Python 实现你的量化交易策略「建议收藏」

    python程序化交易实例-用 Python 实现你的量化交易策略「建议收藏」Python的学习者中,有相当一部分是冲着爬虫去的。因为爬虫可以帮你解决很多工作和生活中的问题,节约你的生命。不过Python还有一个神秘而有趣的应用领域,那就是量化交易。量化交易,就是以数学模型替代人的主观判断来制定交易策略。通常会借助计算机程序来进行策略的计算和验证,最终也常直接用程序根据策略设定的规则自动进行交易。Python由于开发方便,工具库丰富,尤其科学计算方面的支持很强大,所…

    2022年10月8日
    3
  • 腾讯混元 T1

    腾讯混元 T1

    2026年3月12日
    2
  • 天涯共此双11——天猫升级港澳台“购物天堂”

    天涯共此双11——天猫升级港澳台“购物天堂”香港北区上水60多年的老字号正和隆酱油没想过会出名。这家专注服务街坊的小店不在乎“酱香巷子深”,门店一半是透明及地的塑胶门帘,一半是一块块拼接起来的黄色纸板箱。来的都是熟客,所谓收银台就是个铅桶,顾客要付钱就把铅桶拉下来,付钱、找零,再把铅桶放上去。这是父辈们持续了半个多世纪的生意。到了店主女儿这里,事情开始改变。她赶时髦,在店里放了有支付宝二维码的蓝白…

    2022年10月5日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号