您的位置:首页 > 其它

LeetCode刷题【Array】 Search in Rotated Sorted Array II

2017-03-20 15:47 281 查看
题目:

Follow up for "Search in Rotated Sorted Array":

What if duplicates are allowed?
Would this affect the run-time complexity? How and why?

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,1,1,1,2,1]
public class Solution {
public boolean search(int[] nums, int target) {
int mid =0;
int start =0;
int end = nums.length-1;
boolean ret = false;
while(start<=end){
mid =(start+end)/2;
if(target==nums[mid]){
ret = true;
break;
}
if(start==end) break;
if(nums[mid]>nums[end]){
end = target>=nums[start]&&target<nums[mid]? mid-1:end;
start = target>=nums[start]&&target<nums[mid]?start:mid+1;
}
else if(nums[mid]<nums[start]){
start = target<=nums[end]&&target>nums[mid]? mid+1:start;
end = target<=nums[end]&&target>nums[mid]?end:mid-1;
}else if(nums[mid]==nums[end]&&nums[mid]==nums[start]){
start++;
end--;
} else{
start = target<=nums[mid]? start:mid+1;
end = target<=nums[mid]? mid-1:end;
}
}
return ret;
}
}
参考:

【1】https://leetcode.com/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Array leetcode