当前位置:网站首页>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];
}
};
边栏推荐
- mysql 时间字段默认设置为当前时间
- Basic syntax of MySQL DDL and DML and DQL
- [Mysql] CONVERT function
- 分布式事务之 Seata框架的原理和实战使用(三)
- navicat连接MySQL报错:1045 - Access denied for user ‘root‘@‘localhost‘ (using password YES)
- torch.load()
- 使用DataEase开源工具制作一个高质量的数据大屏
- 号称年薪30万占比最多的专业,你知道是啥嘛?
- MYSQL-InnoDB的线程模型
- 【飞控开发基础教程9】疯壳·开源编队无人机-PWM(电机控制)
猜你喜欢
随机推荐
cmd (command line) to operate or connect to the mysql database, and to create databases and tables
MySQL-Explain详解
分布式事务之 Atomikos 原理和使用(一)
MySQL 用户授权
More fragrant open source projects than Ruoyi in 2022
Summary of SQL classic interview questions in 2022 (with analysis)
How is crawler data collected and organized?
破纪录者(Google Kickstart2020 Round D Problem A)
enumerate() 函数
MySQL fuzzy query performance optimization
Basic syntax of MySQL DDL and DML and DQL
4、nerf(pytorch)
Solve phpstudy unable to start MySQL service
This dependency was not found:
MySQL 有这一篇就够(呕心狂敲37k字,只为博君一点赞!!!)
Redis学习
MySQL 灵魂 16 问,你能撑到第几问?
报错:npm ERR code EPERM
Different usage scenarios of subqueries as retrieval tables and the question of whether to add aliases
质数(清华大学机试题)(DAY 86)









