leetcode 81.Search in Rotated Sorted Array II(旋转排序数组中搜素II)

基于单片机自行车码表控制系统设计 *单片机设计介绍,基于单片机自行车码表控制系统设计。 阅读详情

Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.

(i.e., [0,0,1,2,2,5,6] might become [2,5,6,0,0,1,2]).

You are given a target value to search. If found in the array return true, otherwise return false.

Example 1:

Input: nums = [2,5,6,0,0,1,2], target = 0
Output: true

这是33题的变体,也是rotate一个升序数组,区别是可以有重复的数字

思路:
binary search

比如[0, 1, 2, 3, 4, 5, 6] 翻转成 [3, 4, 5, 6, 0, 1, 2]
nums[left] = 3, nums[right] = 2, nums[mid] = 6,
可以看出当nums[mid] < nums[right]时,右半边是升序的,
当nums[mid] > nums[right]时,左半边是升序的。

当判断完哪半边升序之后,我们要判断target在不在这半边里面,
比如现在右半边升序,需要判断target是不是满足nums[mid] < target <= nums[right], (左边不是<=是因为如果=,直接就返回true了),如果满足,left = mid + 1, 接下来在右半边搜索;如果不满足这个条件,则需要在左半边搜索,right = mid - 1。
左半边升序的情况一样的。

因为本题允许重复元素的出现,还有一种情况,nums[mid] == num[right] (也可以和nums[left]比较)。
这种情况比如[1, 0, 1, 1, 1], 这里nums[left] = 1, nums[right] = 1, nums[mid] = 1。
如果nums[mid] 和 nums[right]比,它们相等,需要right --;
如果nums[mid] 和 nums[left]比, 它们相等, 则需要left ++。

时间复杂度O(logn), 最差O(n)

下面代码是nums[mid] 和 nums[right]比。

    public boolean search(int[] nums, int target) {
        int n = nums.length;
        int left = 0;
        int right = n - 1;
        
        while(left <= right){
            int mid = left + (right - left) / 2;
            
            if(nums[mid] == target) return true;
            if(nums[mid] < nums[right]) { //右半边升序
                if(nums[mid] < target && target <= nums[right]) left = mid + 1; //target在右半边
                else right = mid - 1;
            } else if(nums[mid] > nums[right]) { //左半边升序
                if(nums[left] <= target && target < nums[mid]) right = mid - 1; //target在左半边
                else left = mid + 1;
            } else {
                right --; //如果前面if是nums[mid]和nums[left]比,则left ++
            }
        }
        return false;
    }

虽然上面是binary search, 但其实测试的时候发现线性搜索更快。

public boolean search(int[] nums, int target) {
    int n = nums.length;
    for(int i = 0; i < n; i++) {
        if(nums[i] == target) return true;
    }
    return false;
}
OpenClaw 在 Docker 容器中的部署实战——零配置启动 本文介绍了OpenClaw在Docker容器中的快速部署方法,对比了本地部署与容器化部署的优势。通过官方镜像和Docker Compose两种方式,5分钟即可完成部署,并详细讲解了配置管理方案(挂载配置文件和环境变量)。文章还提供了飞书集成配置方法,以及生产环境下的日志管理、资源限制、健康检查等优化建议。最后包含常见问题排查指南,帮助开发者快速实现OpenClaw的容器化部署。 阅读详情

相关推荐

STM32:TTL串口调试

TTL只需要两个线就可以完成两个设备之间的双向通信,一个发送电平的I/O称之为TX,与另一个设备的接收I/O口RX相互连接。两设备之间还需要连接地线(GND),这样两设备就有相同的0V参考电势。

superSmart_Dong的博客 5643

81. Search in Rotated Sorted Array II

题目Follow up for “Search in Rotated Sorted Array”: What if duplicates are allowed?Would this affect the run-time complexity? How and why? Suppose an array sorted in ascending order is rotated at some

分享人工智能学习心得与实践经验,探讨应用场景,见证变革与进步 863

新手必看:如何用PhaGCN2和vConTACT2搞定宏病毒组注释(附避坑指南)

本文为宏病毒组研究新手提供了使用PhaGCN2和vConTACT2进行病毒注释的完整实战指南。内容涵盖从Conda环境配置、软件安装、参数解析到结果解读的全流程,并重点分享了整合双工具进行交叉验证的策略与常见报错解决方案,旨在帮助研究者高效、准确地完成病毒分类注释工作。

j2k3l4的博客 798

[LeetCode] Search in Rotated Sorted Array II

题目 假设一个以升序排列的数组在预先知道的枢轴上旋转。 (i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2). 编写一个函数判断目标值是否存在,数组可能包含重复项。

yiyufxst 331

国产Flash替代方案:手把手教你用XSCT烧写ZYNQ7045的BOOT.BIN(附完整命令解析)

本文详细介绍了国产Flash替代方案在ZYNQ7045上的应用,通过XSCT工具链实现BOOT.BIN的精准烧写。内容涵盖国产Flash兼容性检查、PetaLinux环境搭建、XSCT烧写全流程及故障排查,帮助开发者高效完成国产化替代,提升硬件开发效率。

weixin_33670786的博客 431

NVIDIA驱动版本太低?手把手教你解决CUDA与PyTorch版本冲突问题

本文针对深度学习开发中常见的NVIDIA驱动版本过低导致的CUDA与PyTorch版本冲突问题,提供了从根源理解到实战解决的完整指南。文章详细解析了驱动、CUDA与PyTorch的依赖关系,并给出了升级驱动、降级PyTorch、使用Conda环境管理及Docker容器化四种核心解决方案,帮助开发者快速诊断并构建稳定的GPU开发工作流。

grpc6streamer的博客 971

leetcode 81 Search in Rotated Sorted Array II 二分循环变种

Follow up for "Search in Rotated Sorted Array": What ifduplicatesare allowed? Would this affect the run-time complexity? How and why? Write a function to determine if a given target is in the a...

taoqick的专栏 1056

VCS NLP 低功耗验证系列(六):功耗分析与优化——SAIF 报告与验证效率提升

本文是VCS NLP低功耗验证系列的第六篇,主要解决功耗数据采集和验证效率优化问题。文章首先介绍了SAIF(Switching Activity Interchange Format)文件在功耗分析中的作用,详细讲解了VCS的Region-Based SAIF功能,包括三个关键系统任务($saif_region_create、$saif_region_exclude、$saif_region_monitor)的使用方法和工程实践建议。接着从编译侧、运行侧和方法学侧三个维度提出了NLP验证效率优化策略,特别强

元直的博客 475

81. Search in Rotated Sorted Array II(搜索旋转排序数组 II)两种解法(C++ & 注释)

本文主要使用二分法 & 双指针(Binary Search & Two Pointers)两种方法

主要研究图形学相关领域 366

ConvNeXt 系列改进:引入大核注意力(LKA)替换 7×7 深度卷积,涨点 2.1%

LSKA替换7×7深度卷积,在ImageNet分类任务上实现2.1%的显著提升,参数量仅增加1M。LSKA的四层1D分解将计算复杂度从O(k²)降至O(k),21×21大核的计算量仅相当于原版7×7的1.7倍,实现了感受野与计算成本的完美平衡。部署友好度极高:LSKA模块在TensorRT FP16量化后延迟仅1.2ms,精度损失<0.1%,远优于Transformer类模型。下游任务全面领先。

ZXSXJ的博客 701

【2025软考高级架构师】论文篇——4、论可靠性系统中软件容错技术的应用

软件容错技术对软件的稳定性起着至关重要的作用,尤其是针对互联网性质的软件并发高存在流量峰值等问题,软件容错技术的应用的重要性就不言而喻了。经过这次我所采用的软件容错技术的方法和措施的实施效果后,使我也看到了自己身上的不足之处,我会在今后的架构设计过程中,不断更新自己的知识,不断完善自己的架构设计领域,设计出更好的软件架构,更好的支撑业务平台的运行,提高公司的竞争力,为公司为社会尽一份绵薄之力。

qq837993702的博客 620

Leetcode 81. Search in Rotated Sorted Array II 搜索旋转排序数组 II

Leetcode 81. Search in Rotated Sorted Array II 搜索旋转排序数组 II 标签: Leetcode 题目地址: https://leetcode-cn.com/problems/search-in-rotated-sorted-array-ii/ 题目描述 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,0,1...

CoderWangSon 245

【FPGA教程案例89】编译码2——使用vivado核实现RS信道编译码

RS编码,又称里所码,即Reed-solomon codes,是一种前向纠错的信道编码,对由校正过采样数据所产生的多项式有效。当接收器正确的收到足够的点后,它就可以恢复原来的多项式,即使接收到的多项式上有很多点被噪声干扰失真。

FPGA/MATLAB学习教程/源码/项目合作开发 3545

【LeetCode】解题81:Search in Rotated Sorted Array II

LeetCode解题 81:Search in Rotated Sorted Array II Problem 81: Search in Rotated Sorted Array II [Medium]解题思路Solution (Java) Problem 81: Search in Rotated Sorted Array II [Medium] Suppose an array sorted...

Fayedily的博客 255

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【LeetCode】 81. Search in Rotated Sorted Array II 搜索旋转排序数组 II(Medium)(JAVA)

【LeetCode】 81. Search in Rotated Sorted Array II 搜索旋转排序数组 II(Medium)(JAVA) 题目地址: https://leetcode.com/problems/search-in-rotated-sorted-array-ii/ 题目描述: Suppose an array sorted in ascending order is ro...

qq_16927853的博客 253

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

LeetCode81——Search in Rotated Sorted Array II

LeetCode81——Search in Rotated Sorted Array II

上善若水 1170

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

LeetCode 81. Search in Rotated Sorted Array II(二分)

Search in Rotated Sorted Array II Medium Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e., [0,0,1,2,2,5,6] might become [2,5,6,0,0,1,2]). You are gi...

da_kao_la的博客 205

Leetcode-81. Search in Rotated Sorted Array II 搜索旋转排序数组 II (二分查找) -python

题目 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。 编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true,否则返回 false。 链接:https://leetcode.com/problems/search-in-rotated-sorted-array-ii/ Suppose an array sorted in ascending order is rotated at som

JamieLuo的博客 318

LeetCode //C - 81. Search in Rotated Sorted Array II

【代码】LeetCode //C - 81. Search in Rotated Sorted Array II。

Made in Code 974

LeetCode 81. Search in Rotated Sorted Array II 搜索旋转排序数组 II

题目描述 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。 编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true,否则返回 false。 示例 1: 输入: nums = [2,5,6,0,0,1,2], target = 0 输出: true 示例 2: 输入: nums = [...

it-hao的博客 236

Leetcode 81. Search in Rotated Sorted Array II

Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e., [0,0,1,2,2,5,6] might become [2,5,6,0,0,1,2]). You are given a target value to search. If found ...

salmonwilliam的博客 389

[leetcode] 81. Search in Rotated Sorted Array II 解题报告

题目链接:https://leetcode.com/problems/search-in-rotated-sorted-array-ii/ Follow up for "Search in Rotated Sorted Array": What if duplicates are allowed? Would this affect the run-time complexity

小榕流光的专栏 744

81. Search in Rotated Sorted Array II(搜索旋转排序数组II)

题目链接:https://leetcode.com/problems/search-in-rotated-sorted-array-ii/ 思路同33题,搜索旋转排序数组。 只不过在这次有重复元素的时候,当nums[mid]==nums[left]的时候,我们 无法判断究竟该划分哪一部分,此时就让left++即可。 AC 0ms 100% Java: class Solution { ...

God_Mood的博客 144

Leetcode 81. 搜索旋转排序数组 II(Search in Rotated Sorted Array II)

Leetcode 81. 搜索旋转排序数组 II 1 题目描述(Leetcode题目链接)   假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。   编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true,否则返回 false。 输入: nums = [2,5,6,0,0,1,2], ...

qq_39378221的博客 210

LeetCode——81. 搜索旋转排序数组 II(Search in Rotated Sorted Array II)[中等]——分析及代码(Java)

LeetCode——81. 搜索旋转排序数组 II[Search in Rotated Sorted Array II][中等]——分析及代码[Java]一、题目二、分析及代码1. 二分查找(1)思路(2)代码(3)结果三、其他 一、题目 已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同。 在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转 ,使数组变为 [nums[k], nums[k+1], …, nums[n

江南土豆的博客 209

LeetCode-81. Search in Rotated Sorted Array II [C++][Java]

There is an integer arraynumssorted in non-decreasing order (not necessarily withdistinctvalues). Given the arraynumsafterthe rotation and an integertarget, returntrueiftargetis innums, orfalseif it is not innums.

贫道绝缘子的博客 240
上一篇: leetcode 85. Maximal Rectangle(最大矩形)
下一篇: leetcode 179. Largest Number
蓝羽飞鸟
博客等级 码龄8年 1万+粉丝 727原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝羽飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值