【LeetCode】33.搜索旋转排序数组

devtools/2024/9/24 4:33:07/

1. leetcode.cn/problems/search-in-rotated-sorted-array/?envType=study-plan-v2&envId=top-interview-150" rel="nofollow">题目

在这里插入图片描述

2. 分析

说实话,这道题挺难想的。难点在于,数组非完全有序就会让人产生错觉(这道题无法二分)。如果不是题目要求O(logn)的复杂度,那我觉得我肯定不会想到。可以这么分析:
对于一个旋转排序数组,其长相如下:
在这里插入图片描述

二分切割后,一定满足:至少有一半儿是有序的。基于这个性质,可以得到下面这个代码。

3. 代码

class Solution:def search(self, nums: List[int], target: int) -> int:left = 0right = len(nums) - 1while(left <= right):mid = (left + right) // 2if nums[left] <= nums[mid]: # 左区间完全有序if nums[mid] == target:return midif nums[left] <= target < nums[mid]:right = mid-1else:left = mid+1elif nums[mid] <= nums[right]: # 右区间if nums[mid] == target:return midif nums[mid] < target <= nums[right]:left = mid + 1else:right = mid - 1return -1

http://www.ppmy.cn/devtools/88572.html

相关文章

uniapp HBuilder闪退,有页面或代码量限制

uniapp有个巨坑&#xff0c;一但项目的总vue数量或代码量超过一个值&#xff0c;则有以下表现症状&#xff1a; page.json 中添加 path&#xff0c;无论该 path 是加在在主包中&#xff0c;还是加在 subPackages 的子包中&#xff0c;运行在 APP 中 HBuilder 直接 闪退&#xf…

【JVM内存】系统性排查JVM内存问题的思路

【JVM内存】系统性排查JVM内存问题的思路 背景 前言 遇到过几次JVM堆外内存泄露的问题&#xff0c;每次问题的排查、修复都耗费了不少时间&#xff0c;问题持续几月、甚至一两年。我们将这些排查的思路梳理成一套系统的方法&#xff0c;希望能给对JVM内存分布、内存泄露问题…

开发板与ubuntu不能ping通怎么办?

TOC 第一步&#xff1a;VMware 设置 打开 VMware Workstation Pro 里的 虚拟机 -> 设置 设置网络适配器为桥接模式。这里不要勾选“复制物理网络连接状态”。 因为电脑是 WiFi 上网&#xff0c;所以需要添加一个网络适配器并设置成 NAT 模式&#xff0c;供虚拟机上网。具…

【运维自动化】网络统一监控运维管理解决方案(PPT建设方案)

运维自动化是提升IT运维效率、降低人力成本、增强系统稳定性和可靠性的关键举措。随着业务规模的增长&#xff0c;传统的手动运维方式已难以满足快速响应和高效管理的需求。自动化运维通过脚本、工具和系统平台&#xff0c;实现日常任务自动化执行、故障预警与快速恢复、资源优…

python中的字符串方法

python中的字符串 举个例子先 name 貂蝉开大 #声明了一个字符串 print(name) # 打印了一个字符串 print(name[0:1] #输出貂蝉 print(name[2:3] #输出开大 扩展方法 find() # 查找字符串中某个字符的索引 index_ name.find("貂") print(index_) # 输出 0 …

计算机毕业设计选题推荐-校园消费点评系统-Java/Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

C语言基础题:迷宫寻路(C语言版)

1.题目描述 机器猫被困在一个矩形迷宫里。 迷宫可以视为一个n x m 矩阵&#xff0c;每个位置要么是空地&#xff0c;要么是墙。机器猫只能从一个空地走到其上、下、左、右的空地。 机器猫初始时位于(1,1)的位置&#xff0c;问能否走到(n,m)位置。 2.输入格式 第一行&#xff0…

设计模式-状态模式

状态模式是一种行为设计模式&#xff0c;允许对象在内部状态改变时改变它的行为&#xff0c;对象看起来似乎修改了它的类。 以下是一个简单的状态模式的C#实现示例&#xff0c;其中包含一个简单的状态类以及一个上下文类&#xff0c;该上下文类会根据状态改变其行为&#xff1…