当前位置:网站首页>leetcode:81. 搜索旋转排序数组 II
leetcode:81. 搜索旋转排序数组 II
2022-08-02 08:49:00 【OceanStar的学习笔记】
题目来源
题目描述


class Solution {
public:
bool search(vector<int>& nums, int target) {
}
};
题目解析
本题是leetcode:33. 搜索旋转排序数组的扩展,区别在于本题有重复元素。
我们知道,所谓的旋转其实就是「将某个下标前面的所有数整体移到后面,使得数组从整体有序变为分段有序」。
本题元素不唯一,这意味着我们无法直接根据nums[0]的大小关系,将数组分为为两段,即无法通过「二分」来找到旋转点。
因为「二分」的本质是二段性,并非单调性。只要一段满足某个性质,另外一段不满足某个性质,就可以用「二分」。
举个,我们使用数据 [0,1,2,2,2,3,4,5] 来理解为什么不同的旋转点会导致「二段性丢失」:

class Solution {
public:
int search(vector<int>& nums, int target) {
int left = 0;
int 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++;
continue; // 跳到下个left
}
if (nums[left] <= nums[mid]) {
// 左侧有序,这里可不用=,因为上面判断了
if (nums[left] <= target && target < nums[mid]) {
// 是否在左侧
right = mid - 1;
} else {
// 否则在右边
left = mid + 1;
}
} else {
// 右侧有序
if (nums[mid] < target && target <= nums[right]) {
// 是否在右侧
left = mid + 1;
} else {
// 否则在在左边
right = mid - 1;
}
}
}
return false;
}
};
边栏推荐
猜你喜欢

Redisson报异常attempt to unlock lock, not locked by current thread by node id解决方案

PyCharm usage tutorial (detailed version - graphic and text combination)

四字节的float比八字结的long范围大???

Openwrt_树莓派B+_Wifi中继
![Detailed explanation of calculation commands in shell (expr, (()), $[], let, bc )](/img/3c/5cc4d16b9b525997761445f32802d5.png)
Detailed explanation of calculation commands in shell (expr, (()), $[], let, bc )

houdini 求出曲线的法向 切线以及副法线

天地图给多边形加标注

如何建立私域流量?私域流量对企业有什么好处?

Jenkins--基础--6.1--Pipeline--介绍

location对象,navigator对象,history对象学习
随机推荐
High imitation [Huawei consumer business official website] and wonderful animation analysis: practice embedding JS code in low-code platform
Flink 程序剖析
PyCharm使用教程(较详细,图+文)
Codeforces Round #811 (Div. 3)无DF
新起点丨MeterSphere开源持续测试平台v2.0发布
day_05模块
OneNote Tutorial, How to Create More Spaces in OneNote?
LeetCode第三题(Longest Substring Without Repeating Characters)三部曲之一:解题思路
C语言_条件编译
LeetCode_2358_分组的最大数量
Redis分布式锁入门
Flink 系统性学习笔记系列
LeetCode_2357_使数组种所有元素都等于零
pnpm的安装与使用
【电子电路】长按键拉低电平,适用在有休眠机制的MCU但是没有看门狗,一个按键多个功能场景下使用
堪称神级的阿里巴巴“高并发”教程《基础+实战+源码+面试+架构》
AI目标分割能力,无需绿幕即可实现快速视频抠图
【微信小程序2】事件绑定
测试时大量TIME_WAIT
next permutation