力扣33. 搜索旋转排序数组

Problem: 33. 搜索旋转排序数组

文章目录

  • 题目描述
  • 思路
  • 复杂度
  • Code

题目描述

在这里插入图片描述在这里插入图片描述

思路

1.初始化左右指针:首先,定义两个指针left和right,分别指向数组的开始和结束位置。
2.计算中间值:在left和right之间找到中间位置mid。
3.比较中间值和目标值:如果中间位置的值等于目标值,那么就返回中间位置mid。
4.判断旋转点:如果中间位置的值小于或等于右侧位置的值,说明旋转点在左侧或者就是中间位置。

4.1.如果目标值在中间值和右侧值之间,那么将左侧指针移动到中间位置的右侧(left = mid + 1)。
4.2.否则,将右侧指针移动到中间位置的左侧(right = mid - 1)。

5.处理左侧有序的情况:如果中间位置的值大于右侧位置的值,说明旋转点在右侧。

5.1.如果目标值在左侧值和中间值之间,那么将右侧指针移动到中间位置的左侧(right = mid - 1)。
5.2.否则,将左侧指针移动到中间位置的右侧(left = mid + 1)。

6.未找到目标值:如果在数组中没有找到目标值,那么返回-1。

复杂度

时间复杂度:

O ( l o g n ) O(logn) O(logn)

空间复杂度:

O ( 1 ) O(1) O(1)

Code

class Solution {/*** Search for a rotationally sorted array(Binary search)** @param nums   Given array* @param target Number to be found* @return int*/public int search(int[] nums, int target) {if (nums == null || nums.length < 1) {return -1;}int left = 0;int right = nums.length - 1;while (left <= right) {int mid = left + (right - left) / 2;//Foundif (nums[mid] == target) {return mid;//Right-side interval order} else if (nums[mid] <= nums[right]) {//On the rightif (target >= nums[mid] && target <= nums[right]) {left = mid + 1;} else {right = mid - 1;}} else { //Left-side interval order//On the leftif (target < nums[mid] && target >= nums[left]) {right = mid - 1;} else {left = mid + 1;}}}return -1;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/4983.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

strstr,strnstr函数详解

strstr函数 strstr函数是C语言中的一个字符串函数&#xff0c;用于在一个字符串中查找另一个字符串的出现位置。 它的函数原型如下&#xff1a; char *strstr(const char *haystack, const char *needle); 在这个函数中&#xff0c;haystack表示被搜索的字符串&#xff0c;…

【MHA】MySQL高可用MHA介绍2-安装,配置,要求与限制

目录 一 快速开始 简单故障转移 1 构建普通的复制环境 2 在host1-host4上安装MHA Node 3 在host4(manager_host)上安装MHA Manager 4 创建配置文件 5 检查SSH连接 6 检查复制配置 7 启动manager 8 检查manager状态 9 停止manager 10 测试主故障转移 11 下一步 二…

Vue3的新组件<Suspense>

在 Vue 3 中&#xff0c;你可以使用 <Suspense> 组件来包裹异步组件&#xff0c;从而提供一个更好的用户体验&#xff0c;包括在组件加载时的占位符和加载失败时的错误提示。<Suspense> 是 Vue 3 提供的一个新特性&#xff0c;允许你指定加载异步组件时的默认内容和…

IP路由安全:保护网络免受威胁

目录 前言 一 IPv4 协议及其安全性分析 IPv4 安全问题&#xff1a; 增强 IPv4 安全性的策略&#xff1a; 二 IPsec&#xff1a;增强 IP 通信安全 1.IPsec 工作原理&#xff1a; 2.IPsec 用例&#xff1a; 3.AH协议 AH 协议工作原理 AH 协议的工作原理高级概述 AH 协议…

深入理解 Python 中的 zip 函数

目录 一、zip 函数的基础用法 二、处理不等长的可迭代对象 三、使用 * 运算符进行解压 四、在并行迭代中使用 zip 五、zip 与字典 六、高级示例 同时遍历多个列表 使用 zip 创建字典的进阶用法 利用 zip 进行数据筛选 &#x1f680; 个人主页&#xff1a;xmp65535 &a…

【多态】有关多继承和菱形继承的多态

博主首页&#xff1a; 有趣的中国人 专栏首页&#xff1a; C进阶 其它专栏&#xff1a; C初阶 | 初阶数据结构 | Linux 博主会持续更新 本篇文章主要讲解 多继承和菱形继承的多态 的相关内容 文章目录 1. 回顾多态底层2. 抽象类2.1 概念2.2 接口继承和实现继承 3. 虚表所在…

数学小报4 - 三次方程的求根公式 Quadratic Formula

数学小报4 - 三次方程的求根公式 Quadratic Formula 0. 前言 完整内容同步发表于 https://blog.csdn.net/Mr_Azz/article/details/135443217 由于证明量过于巨大&#xff0c;部分证明简化&#xff0c;详情请见网址。 1. 思考 我们学习过一元二次方程的求根公式 x − b …

05.Vue2.x 数据代理

文章目录 Vue中的数据代理 Vue中的数据代理 !<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>数…

Linux——web建立wordpress

下载 [rootnfs-server ~]# yum install php wget https://wordpress.org/latest.tar.gz解压 /var/www/html [rootnfs-server html]# tar -xzvf latest.tar.gz [rootnfs-server html]# rm latest.tar.gz授权 [rootnfs-server html]# chown -R www:www /var/www/html添加文件备…

利用kimi等大模型进行运维参数解析和调优

在运维时&#xff0c;经常遇到很多参数&#xff0c;有些参数不知道意义&#xff0c;知道意义的也有些不知道合理参考值是多少。利用kimi等大模型来当老司机&#xff0c;轻松解决运维难题。 例如在运维hive参数时&#xff0c;有些不知道作用&#xff0c;提示次如下 你的角色是…

windows ubuntu sed,awk,grep篇:7.sed 多行模式及循环

目录 46.读取下一行数据并附加到模式空间(命令 N) 47.打印多行模式中的第一行(命令 P) 48. 删除多行模式中的第一行(命令 D) 49.循环和分支(命令 b 和 :label 标签) 50.使用命令 t 进行循环 Sed 默认每次只处理一行数据&#xff0c;除非使用 H,G 或者 N 等命令创建多行模式&…

python学习笔记B-11:序列结构之列表--二维列表的遍历和生成式

二维列表的遍历方式&#xff0c;使用双层for循环&#xff0c;遍历索引号。 二维列表的生成式&#xff0c;也是使用类似双层循环的形式生成。 print("##初始化二维列表&#xff0c;每个元素就是1个列表") lst [["东方延续","太空军自然选择号舰长&qu…

释放Stable Diffusion 无限可能

最近在整理大语言模型的系列内容&#xff0c;Stable Diffusion 是我下一篇博客的主题。关注 Stable Diffusion&#xff0c;是因为它是目前最受欢迎和影响力最大的多模态生成模型之一。Stable Diffusion 于 2022 年 8 月发布&#xff0c;主要用于根据文本的描述产生详细图像&…

android 判断文件是否存在

在 Android 中&#xff0c;你可以使用 java.io.File 类来判断一个文件是否存在。下面是一个简单的示例代码&#xff1a; import java.io.File; public class FileChecker { public static boolean isFileExist(String filePath) { File file new File(fi…

基于SpringBoot+Vue笔记记录分享网站设计与实现

项目介绍&#xff1a; 信息数据从传统到当代&#xff0c;是一直在变革当中&#xff0c;突如其来的互联网让传统的信息管理看到了革命性的曙光&#xff0c;因为传统信息管理从时效性&#xff0c;还是安全性&#xff0c;还是可操作性等各个方面来讲&#xff0c;遇到了互联网时代…

uniApp设置和清除定时器

首先是在data中定义一个变量&#xff0c;用来存放定时器 data() {return {timer: null,} } 在适当的地方创建定时器 this.timer setInterval(() > {console.log(111); }, 10000) 在onHide或者是onUnload中销毁定时器&#xff0c;一般来说tabbar页面的切换会触发onHide&…

C语言 | Leetcode C语言题解之第50题Pow(x,n)

题目&#xff1a; 题解&#xff1a; double myPow(double x, int n){if(n 0 || x 1){return 1;}if(n < 0){return 1/(x*myPow(x,-(n1)));}if(n % 2 0){return myPow(x*x,n/2);}else{return x*myPow(x*x,(n - 1)/2);} }

【Jenkins】持续集成与交付 (三):有关报错解决(Jenkins (2.387.3) or higher required)

🟣【Jenkins】持续集成与交付 (三):有关报错解决Jenkins (2.387.3) or higher required 一、Jenkins主页报错二、安装Jenkins插件报错三、解决过程(解压替换jenkins.war)四、重新访问登录💖The Begin💖点点关注,收藏不迷路💖 一、Jenkins主页报错 New version …

Git Submodule 全流程使用指南

Git Submodule 是 Git 中用于管理子项目的强大功能。它允许我们将一个 Git 仓库作为另一个 Git 仓库的子模块进行管理&#xff0c;从而使项目结构更加清晰&#xff0c;代码维护更加方便。 本指南将详细讲解 Git Submodule 的创建、规划、更新、合并全流程的使用过程和操作步骤…

每天一个数据分析题(二百八十二)

积分表result中有A B C D四列&#xff0c;要求&#xff1a;1&#xff09;当A列值大于等于B列时&#xff0c;选择A列否则选择B列 2&#xff09;当C列值大于等于D列时&#xff0c;选择C列否则选择D列 用SQL语句实现正确的是&#xff1a;&#xff08; &#xff09; A. select ( w…