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

33. 搜索旋转排序数组

题目:
在这里插入图片描述

第一次思考:

  1. 对于复杂度logn,想到二分查找
  2. 但首先整个数组不是完全有序的,存在旋转
  3. 目前思路是
    1. 通过二分查找找到旋转的位置
    2. 分别对旋转位置左右进行二分查找

实现:


class Solution {
public:int binarySearch(vector<int>& nums,int l,int r,int target){int ret=-1;while(l<=r){int mid=(l+r)/2;if (nums[mid]==target){ret=mid;break;}else if (nums[mid]<target){l=mid+1;}else{r=mid-1;}}return ret;}int search(vector<int>& nums, int target) {if (target==nums[0]) return 0;if (nums.size()<=1) return binarySearch(nums,0,nums.size()-1,target);int left=0;int right=nums.size()-1;while(left<right){int mid=(left+right)/2;if (nums[mid]<nums[left]){right=mid;}else if (nums[mid]>nums[left]){left=mid;}else{break;}}int rotate_pos=left==0?nums.size()-2:left;left=0;right=rotate_pos;bool find_=false;int ret=-1;left=1;right=rotate_pos;ret=binarySearch(nums,left,right,target);if (ret==-1){left=rotate_pos+1;right=nums.size()-1;ret=binarySearch(nums,left,right,target);}return ret;}
};
http://www.lqws.cn/news/584623.html

相关文章:

  • pytorch底层原理学习--PyTorch 架构梳理
  • FreePDFv3.0.0:颠覆你的文献阅读习惯
  • 16014.rtsp推流服务器
  • C++ 第四阶段 STL 容器 - 第五讲:详解 std::set 与 std::unordered_set
  • TDH社区开发版安装教程
  • [学习]M-QAM的数学原理与调制解调原理详解(仿真示例)
  • [面试]手写题-Promise.all() Promise.race()
  • 机器学习20-线性网络思考
  • 第三十六章 CAN——控制器局域网络接口
  • 字节跳动 C++ QT PC客户端面试
  • 论文中用matplotlib画的图,如何保持大小一致。
  • Vue2中使用DHTMLX Gantt
  • 深入理解Webpack的灵魂:Tapable插件架构解析
  • 使用Dirichlet分布进行随机初始化
  • 文心大模型 4.5 系列开源首发:技术深度解析与应用指南
  • StackGAN(堆叠生成对抗网络)
  • vscode 改注释的颜色,默认是灰色的,想改成红色
  • Prompt Enginering
  • 会议室预约系统的典型架构
  • Prompt 精通之路(一)- AI 时代的新语言:到底什么是 Prompt?为什么它如此重要?
  • Python 数据分析与机器学习入门 (五):Matplotlib 数据可视化基础
  • ubuntu源码安装python3.13遇到Could not build the ssl module!解决方法
  • 使用nomachine远程连接ARM设备桌面
  • 【Vscode】Vscode切换成中文语言
  • Java历史:从橡树到火星探索,从微软法律战到Spring、Gradle
  • Java web1(黑马)
  • django 数据表外键 删除时 对应表的数据不删除如何设置
  • 卫朋:华为流程体系拆解系列——IPD流程L1-L6分级导入实战演练
  • Junit_注解_枚举
  • 机器学习在智能仓储中的应用:库存管理与物流优化