题目链接

https://leetcode-cn.com/problems/search-in-rotated-sorted-array-ii/description/

题目描述

假设按照升序排序的数组在预先未知的某个点上进行了旋转。

( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。

编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true,否则返回 false。

示例 1:

输入: nums = [2,5,6,0,0,1,2], target = 0
输出: true

示例 2:

输入: nums = [2,5,6,0,0,1,2], target = 3
输出: false

题解

和该系列题目的第一题一样,采用二分查找法,当最后跳出循环的时候,需要判断一下当前元素和target元素是否相等。

代码

class Solution {
public boolean search(int[] a, int target) {
if (a == null || a.length == 0) {
return false;
}
int lo = 0, hi = a.length - 1;
while (lo < hi) {
int mid = (lo + hi) >> 1;
if (a[mid] == target) { return true; }
if (a[mid] > a[hi]) {
//考虑单调的一边
if (a[mid] > target && target >= a[lo]) { hi = mid; }
else lo = mid + 1;
} else if (a[mid] < a[hi]) {
if (a[mid] < target && a[hi] >= target) {
lo = mid + 1;
} else {
hi = mid;
}
} else {
hi--;
}
}
return a[lo] == target ? true : false;
}
}

最新文章

  1. 浏览器功能记住账号和密码解决方法(HTML解决方式)
  2. putty ssh连接老断
  3. Ibatis学习总结2--SQL Map XML 配置文件
  4. 【Zhejiang University PATest】02-1. Reversing Linked List
  5. Hive与HBase区别
  6. Java:正则表达式的详解
  7. PAT 1018
  8. C# 内存管理优化畅想(二)---- 巧用堆栈
  9. SQL随机查询,显示行号,查询数据段
  10. js返回顶部封装 简洁
  11. Windows界面设计标准
  12. Understanding ROS Services and Parameters
  13. 使用AltSearch格式化Kindle读书笔记
  14. Nodejs搭建基于express的应用,使用脚手架工具--express-generator
  15. CSS单元的位置和层次-div标签
  16. linux之cp命令(转载)
  17. Xtrabackup的安装
  18. 关于Mybatis的SQL映射文件中in关键字的用法
  19. RDLC 设置表的重复标题行(在每页中显示标题行)
  20. windows7内核分析之x86&amp;x64第二章系统调用

热门文章

  1. Spark Mllib里的向量标签概念、构成(图文详解)
  2. Spring Boot Security配置教程
  3. 网络编程之异步IO,rabbitMQ笔记
  4. Hybrid app(cordova) 环境配置记录
  5. 【踩坑】Nginx上配置ssl证书实现https访问
  6. 移动端的300ms延迟和点击穿透
  7. Android仿360悬浮小球自定义view实现
  8. Effective C++ 重要条款
  9. 关于学习Lisp的一点思考
  10. python中的uuid4