
力扣:搜索旋转排序数组 II
发布日期:2021-05-08 20:01:10
浏览次数:17
分类:原创文章
本文共 1221 字,大约阅读时间需要 4 分钟。
题目描述
假设按照升序排序的数组在预先未知的某个点上进行了旋转。
( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。
编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true,否则返回 false。
题目分析
请参考
本题的区别在于,数组中有重复元素的出现,需要进行边界压缩 ,核心如下:
if(nums[left] == nums[mid]){ left ++; continue;}
其他的过程和 搜索旋转排序数组 完全一致
class Solution { public boolean search(int[] nums, int target) { int left = 0 , right = nums.length - 1; while(left <= right){ int mid = left + (right - left) / 2; if(nums[mid] == target) return true; // 压缩左边界 if(nums[left] == nums[mid]){ left ++; continue; } // mid 在前半段升序数组中 if(nums[mid] > nums[0]){ // target 在 left 和 mid 之间 if(nums[left] <= target && nums[mid] > target){ right = mid - 1; } else { left = mid + 1; } } else { // mid 在后半段升序数组中 // target 在 mid 和 right 之间 if(nums[mid] < target && target <= nums[right]){ left = mid + 1; } else { right = mid - 1; } } } return false; }}
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月02日 15时44分41秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
zmq的send
2021-05-09
delete对象时会自动调用类的析构函数
2021-05-09
POD类型
2021-05-09
const与常量,傻傻分不清楚~
2021-05-09
Head First设计模式——迭代器模式
2021-05-09
MongoDB版本及存储引擎区别
2021-05-09
shell echo单行和多行文字定向写入到文件中
2021-05-09
cmp命令
2021-05-09
Linux 磁盘管理(df fu fdisk mkfs mount)
2021-05-09
jQuery的事件绑定与触发 - 学习笔记
2021-05-09
Linux上TCP的几个内核参数调优
2021-05-09
记一次讲故事机器人的开发-我有故事,让机器人来读
2021-05-09
seo 回忆录百度基本概念(一)
2021-05-09
netcore中使用session
2021-05-09
Android 开发学习进程0.25 自定义控件
2021-05-09
多媒体文件格式全解说(下)--图片
2021-05-09
淘宝WAP版小BUG分析
2021-05-09
asp.net打印网页后自动关闭网页【无需插件】
2021-05-09
【Maven】POM基本概念
2021-05-09