LeetCode 81.Search in Rotated Sorted Array II(M)
题目:
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.
(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).
Write a function to determine if a given target is in the array.
The array may contain duplicates.
思路:
1.当数组长度为0时,return false;
2.当数组长度为1时,比较nums[0]与target关系;
3.当数组长度大于1,且为rotated sorted array时,根据nums[mid]与nums[start]关系判断如何移动,见下图:

4.当数组长度大于1,但不是rotated sorted array时,用传统二分法。
代码:
public class Solution {
public boolean search(int[] nums, int target) {
int start = 0,end = nums.length-1,mid = 0;
if(nums.length == 0){
return false;
}
if(nums.length == 1){
if(nums[0] == target){
return true;
}else{
return false;
}
}
while(nums[start]>= nums[end] && start + 1<end){
mid = start + (end - start)/2;
if(nums[mid] == target || nums[start] == target ||nums[end] == target ){
return true;
}else if(nums[mid] > nums[start]){
if(nums[mid] < target){
start = mid;
}else if(nums[start] < target){
end = mid;
}else if(nums[start] > target){
start = mid;
}
}else if(nums[mid] < nums[start]){
if(nums[mid] > target){
end = mid;
}else if(nums[end] > target){
start = mid;
}else if(nums[end] < target){
end = mid;
}
}else{
start++;
}
}
while(nums[start]< nums[end] && start + 1<end){
mid = start + (end - start)/2;
if(nums[mid] == target){
return true;
}else if(nums[mid] > target){
end = mid;
}else if(nums[mid] < target){
start = mid;
}else{
start++;
}
}
if(nums[start] == target || nums[end] == target){
return true;
}
return false;
}
}
LeetCode 81.Search in Rotated Sorted Array II(M)的更多相关文章
- LeetCode 81 Search in Rotated Sorted Array II [binary search] <c++>
LeetCode 81 Search in Rotated Sorted Array II [binary search] <c++> 给出排序好的一维有重复元素的数组,随机取一个位置断开 ...
- [leetcode]81. Search in Rotated Sorted Array II旋转过有序数组里找目标值II(有重)
This is a follow up problem to Search in Rotated Sorted Array, where nums may contain duplicates. 思路 ...
- [LeetCode] 81. Search in Rotated Sorted Array II 在旋转有序数组中搜索 II
Follow up for "Search in Rotated Sorted Array":What if duplicates are allowed? Would this ...
- [LeetCode] 81. Search in Rotated Sorted Array II 在旋转有序数组中搜索之二
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...
- LeetCode 81. Search in Rotated Sorted Array II(在旋转有序序列中搜索之二)
Follow up for "Search in Rotated Sorted Array":What if duplicates are allowed? Would this ...
- leetCode 81.Search in Rotated Sorted Array II (旋转数组的搜索II) 解题思路和方法
Follow up for "Search in Rotated Sorted Array": What if duplicates are allowed? Would this ...
- LeetCode 81 Search in Rotated Sorted Array II(循环有序数组中的查找问题)
题目链接:https://leetcode.com/problems/search-in-rotated-sorted-array-ii/#/description 姊妹篇:http://www. ...
- Leetcode#81 Search in Rotated Sorted Array II
原题地址 如果不存在重复元素,仅通过判断数组的首尾元素即可判断数组是否连续,但是有重复元素的话就不行了,最坏情况下所有元素都一样,此时只能通过线性扫描确定是否连续. 设对于规模为n的问题的工作量为T( ...
- leetcode 153. Find Minimum in Rotated Sorted Array 、154. Find Minimum in Rotated Sorted Array II 、33. Search in Rotated Sorted Array 、81. Search in Rotated Sorted Array II 、704. Binary Search
这4个题都是针对旋转的排序数组.其中153.154是在旋转的排序数组中找最小值,33.81是在旋转的排序数组中找一个固定的值.且153和33都是没有重复数值的数组,154.81都是针对各自问题的版本1 ...
随机推荐
- day19-3个双下item方法
#使用双下item方法来实现属性的增删改查: # 查:__getitem__ 增改:__setitem__ 删除: __delitem__ class Goods: def __init__(self ...
- python语法基础-并发编程-线程-长期维护
############### 线程和GIL,全局解释器锁 ############## """ 线程 为什么会有进程? 主要是能够同时处理多个任务,多个任务还 ...
- 把Java代码转成c#可用的dll
1.首先你需要到 IKVM官网 下载IKVM.http://sourceforge.net/projects/ikvm/files/,需要注意的是如果你用的是.net framework2.0,那么最 ...
- python学习笔记(16)hashlib.md5摘要算法(哈希算法)
一.摘要算法格式 import hashlib #导入hashlib模块 md = hashlib.md5() #获取一个md5加密算法对象 md.update('how to use md5 in ...
- Ubuntu 12.04 查看DOCSIS配置文件
查看BIN格式的DOCSIS配置文件,需要专用工具. 工具安装 在Windows下,可以使用工具VultureWare DOCSIS Config Editor. 在Ubuntu(本机版本12.04) ...
- 吴裕雄--天生自然 PHP开发学习:在CenterOS 7 系统安装配置PHP 7
执行命令"yum install httpd"进行安装,然后在选择处,我们输入y,等待软件安装完毕.安装完成后,Apache配置文件路径是:/etc/httpd/conf/http ...
- 转载【docker】CMD ENTRYPOINT 的使用方法
原文:https://blog.csdn.net/u010900754/article/details/78526443
- spring和mybatis整合报错:org.springframework.beans.MethodInvocationException: Property 'dataSource' threw exception; nested exception is java.lang.NoClassDefFoundError
Exception in thread "main" org.springframework.beans.factory.UnsatisfiedDependencyExceptio ...
- 推送至远程仓库使用git push -u的原因
第一次把本地仓库推送至远端时,为了以后方便一定要使用 git push -u origin master [此处是把本地的master分支推送至远程的master分支]
- lua https request 调用
网上资料 引用ssl.https 包 local https = require("ssl.https") 之后按同http一样调用. 但是,这种只最基本的实现了访问https服务 ...