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

Leetcode154. Find Minimum in Rotated Sorted Array II

旋转数组找最小,这次值可以重复
不妨假设你已经做了上一题,题解

上一题的方法1肯定是用不了了,因为不再能完全分成2个不同的部分

所以我们沿着方法2走

如果 > n u m s [ r ] >nums[r] >nums[r],我们依然可以找右半边
如果 n u m s [ l ] < n u m s [ m i d ] < n u m s [ r ] nums[l] < nums[mid] < nums[r] nums[l]<nums[mid]<nums[r],那可以直接返回 n u m s [ l ] nums[l] nums[l]
只能是情况1,不可能是情况2和3
在这里插入图片描述
现在只剩下 n u m s [ m i d ] ≤ n u m s [ r ] , n u m s [ m i d ] ≤ n u m s [ l ] nums[mid] \le nums[r], nums[mid] \le nums[l] nums[mid]nums[r],nums[mid]nums[l]
在这里插入图片描述
[ 3 , 3 , 3 , 3 , 1 , 3 , 3 ] n u m s [ l ] = n u m s [ m i d ] = n u m s [ r ] = 3 [3, 3, 3, 3, 1, 3, 3]\ nums[l] = nums[mid] =nums[r] =3 [3,3,3,3,1,3,3] nums[l]=nums[mid]=nums[r]=3
[ 3 , 3 , 1 , 3 , 3 , 3 , 3 ] n u m s [ l ] = n u m s [ m i d ] = n u m s [ r ] = 3 ; [3, 3, 1, 3, 3, 3, 3]\ nums[l] = nums[mid] =nums[r] =3; [3,3,1,3,3,3,3] nums[l]=nums[mid]=nums[r]=3;
不能直接排除一半,只能从右往左

那为啥不能是从左往右呢,考虑 [ 0 , 1 ] [0,1] [0,1]
因为总体是一个单调递增的感觉,从左往右可能g了

class Solution {
public:int findMin(vector<int>& nums) {int l = 0, r = nums.size() - 1;while(l < r){int mid = l + (r - l) / 2;if(nums[mid] > nums[r]){l = mid + 1;}else if(nums[l] < nums[mid]){return nums[l];}else{ // nums[l] <= nums[mid] <= nums[r]// [3, 3, 3, 3, 1, 3, 3] nums[l] = nums[mid] =nums[r] =3;// [3, 3, 1, 3, 3, 3, 3] nums[l] = nums[mid] =nums[r] =3;// cannot decide left or right--r;}}return nums[l];}
};
http://www.lryc.cn/news/227385.html

相关文章:

  • 【分析思路】测试数据分析思路
  • 链表的实现(文末附完整代码)
  • asp.net core 获取服务实例的几种方式
  • 指标体系:洞察变化的原因
  • Dell戴尔灵越Inspiron 7700 AIO一体机电脑原厂预装Windows10系统
  • 系统架构主题之九:软件设计模式及其应用
  • Spring IoC注解式开发
  • 智能一体化管网水位监测仪怎么样?
  • 个人网厅——销户
  • 通过创建自定义标签来扩展HTML
  • Nacos热更新
  • CSS3 中 transition 和 animation 的属性分别有哪些
  • 【狂神说Java】Nginx详解
  • 【第六章】软件设计师 之 数据结构与算法基础
  • Git基本概念和使用方式
  • Falcon构建轻量级的REST API服务
  • 【Python】python读取,显示,保存图像的几种方法
  • k8s系列-kuboard 该操作平台的使用操作
  • 基于讯飞星火大语言模型开发的智能插件:小策问答
  • 笔记:AI量化策略开发流程-基于BigQuant平台(二)
  • 100127. 给小朋友们分糖果 II
  • 【2】Spring Boot 3 项目搭建
  • 【第七章】软件设计师 之 程序设计语言与语言程序处理程序基础
  • 如何判断一个角是否大于180度(2)
  • ASAM OpenDRIVE V1.7协议超详解(一)
  • springboot的配置信息的设置和读取(application.properties/application.yml)
  • Deepsort项目详解
  • C语言证明一个偶数总能表示为两个素数之和。输入一个偶数并将其分解为两个素数
  • Python 的 datetime 模块
  • Termius for Mac:掌控您的云端世界,安全高效的SSH客户端