当前位置:网站首页>81.搜索旋转排序数组II(数组旋转后二分查找)
81.搜索旋转排序数组II(数组旋转后二分查找)
2022-07-30 05:38:00 【Linke66】

记录一下:
if(nums[left]==nums[mid]){
//无法判断哪个区间是升序的
++left;
}
假如是上面这种情况,反正是寻找有无target,两个元素相等,直接让left往右移动一个,直到能够判断左边还是右边是升序!
class Solution {
public:
bool search(vector<int>& nums, int target) {
int left=0,right=nums.size()-1;
while(left<=right){
int mid=left+(right-left)/2;
if(nums[mid]==target){
return true;
}
if(nums[left]==nums[mid]){
//无法判断哪个区间是升序的
++left;
}else if(nums[mid]<=nums[right]){
//右区间是升序的
if(target>nums[mid]&&target<=nums[right]){
left=mid+1;
}else{
right=mid-1;
}
}else
{
//左区间是升序的
if(target<nums[mid]&&target>=nums[left]){
right=mid-1;
}else{
left=mid+1;
}
}
}
return false;
}
};

特别注意相等的时候,
不能随意忽略左界或右界,因为无法确定左界升序还是右界升序,因此只能忽略一个元素,即right=right-1;
class Solution {
public:
int findMin(vector<int>& nums) {
int left=0,right=nums.size()-1;
while(left<right)
{
int mid=left+(right-left)/2;
if(nums[mid]<nums[right]){
//更新右界,最小元素不可能在mid右边,mid可能是最小的元素
right=mid;
}else if(nums[mid]>nums[right]){
//更新左界,最小元素一定在mid右边
left=mid+1;
}else{
//不能随意忽略任一部分,但是可以忽略右端点
//因为是跟右界比的,既然相等就忽略右端点
right-=1;
}
}
return nums[left];
}
};
边栏推荐
猜你喜欢

【线性神经网络】线性回归 / 基础优化方法

IDEA的database使用教程(使用mysql数据库)

Nacos 原理

SOA(面向服务架构)是什么?

Memories · The last system design in the university era

MySql模糊查询大全

ClickHouse 数据插入、更新与删除操作 SQL

2022 SQL big factory high-frequency practical interview questions (detailed analysis)
![[GO Language Basics] 1. Why do I want to learn Golang and the popularization of GO language entry](/img/ac/80ab67505f7df52d92a206bc3dd50e.png)
[GO Language Basics] 1. Why do I want to learn Golang and the popularization of GO language entry

最新版MySQL 8.0 的下载与安装(详细教程)
随机推荐
The use of Conluce, an online document management system
【Koltin Flow(二)】Flow操作符之末端操作符
图形镜像对称(示意图)
cnpm installation steps
【图像处理】基于中轴变换实现图像骨架提取附matlab代码
MySql fuzzy query Daquan
[GO Language Basics] 1. Why do I want to learn Golang and the popularization of GO language entry
mysql高阶语句(一)
create-nuxt-app创建出来的项目没有server
Machine Learning - Gradient Descent Optimization - C language implementation
[详解C语言]一文带你玩转数组
4461. Range Partition (Google Kickstart2022 Round C Problem B)
MySql模糊查询大全
Arrange numbers (DAY90) dfs
torch.optim.Adam()
MySQL模糊查询性能优化
MySql的初识感悟,以及sql语句中的DDL和DML和DQL的基本语法
St. Regis Takeaway Project: New dishes and dishes paged query
pytorch中的线性代数
cnpm安装步骤