当前位置:网站首页>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];
}
};
边栏推荐
猜你喜欢

SRA数据下载方法总结

Teach you how to design a CSDN system

分布式事务之 LCN框架的原理和使用(二)

Detailed MySQL-Explain

瑞吉外卖项目:新增菜品与菜品分页查询

Programmers make money and practice, teach you how to do paid courses, self-media, paid articles and paid technical courses to make money

MySQL模糊查询性能优化

MySQL stored procedure

安装Nuxt.js时出现错误:TypeError:Cannot read property ‘eslint‘ of undefined

Error: listen EADDRINUSE: address already in use 127.0.0.1:3000
随机推荐
Summary of SQL classic interview questions in 2022 (with analysis)
Basic syntax of MySQL DDL and DML and DQL
MySQL stored procedure
4、nerf(pytorch)
Navicat connection MySQL error: 1045 - Access denied for user 'root'@'localhost' (using password YES)
MySQL (2)
分布式事务之 LCN框架的原理和使用(二)
MYSQL-InnoDB的线程模型
Navicat cannot connect to mysql super detailed processing method
cnpm安装步骤
net start mysql MySQL service is starting. MySQL service failed to start.The service did not report any errors.
mysql time field is set to current time by default
使用DataEase开源工具制作一个高质量的数据大屏
2022年SQL经典面试题总结(带解析)
pytorch中的线性代数
torch.optim.Adam()
Teach you to completely uninstall MySQL
Different lower_case_table_names settings for server ('1') and data dictionary ('0') solution
解决phpstudy无法启动MySQL服务
torch.load()