这是 “搜索旋转排序数组”问题的跟进:
如果数组元素允许重复,怎么办?
这会影响到程序的时间复杂度吗?会有怎样的影响,为什么?
假设按照升序排序的数组在预先未知的某个关键点上旋转。
(例如, 0 1 2 4 5 6 7 可能变成 4 5 6 7 0 1 2)。
编写一个函数来判断给定的目标是否在数组中。
该数组可能包含重复项。
详见:https://leetcode.com/problems/search-in-rotated-sorted-array-ii/description/

Java实现:

class Solution {
public boolean search(int[] nums, int target) {
int n=nums.length;
if(n==0||nums==null){
return false;
}
int left=0;
int right=n-1;
while(left<=right){
int mid=(left+right)>>1;
if(nums[mid]==target){
return true;
}else if(nums[left]==nums[mid]&&nums[mid]==nums[right]){
++left;
--right;
}else if(nums[left]<=nums[mid]){
if(nums[left]<=target&&target<nums[mid]){
right=mid-1;
}else{
left=mid+1;
}
}else{
if(target>nums[mid]&&target<=nums[right]){
left=mid+1;
}else{
right=mid-1;
}
}
}
return false;
}
}

最新文章

  1. 对 Serializable和Parcelable理解
  2. 《转》 浅谈C# 多态的魅力(虚方法,抽象,接口实现)
  3. requirejs:模块加载(require)及定义(define)时的路径小结
  4. 【linux】学习1
  5. QProgressBar的使用例子
  6. RTB
  7. PHP 表单验证 - 完成表单实例
  8. 回收进程用户空间资源 exit()函数 _exit()函数 atexit()函数 on_exit()函数
  9. PHP - mysql使用参数数据
  10. grails的controller和action那点事---远程调试groovy代码
  11. 《剑指Offer》面试题-从头到尾打印链表
  12. javascript代码实现简单的五星评价功能!
  13. Math类的方法应用
  14. c++ 入门 之 hello world 和基本语法
  15. LOJ 2551 「JSOI2018」列队——主席树+二分
  16. edu30F. Forbidden Indices
  17. Window对象属性
  18. libcurl断点下载遇到的问题
  19. 你应该知道的JAVA面试题
  20. Objective-C学习笔记(四)——OC实现最简单的数学运算

热门文章

  1. 如何刷新本地的DNS缓存?
  2. AttributeError: module &#39;tensorflow&#39; has no attribute &#39;sub&#39;
  3. python之yield和Generator
  4. 利用Powershell在IIS上自动化部署网站
  5. unittest执行测试用例的N种姿势总结
  6. Locked Treasure
  7. codevs-2235
  8. ElasticSearch基础之查询功能
  9. 牛客 - 700I - Matrix Again - 二维RMQ - 二分
  10. setInterval和setTImeout中的this指向问题