Follow up for "Search in Rotated Sorted Array":
What if duplicates are allowed?
Would this affect the run-time complexity? How and why?
Write a function to determine if a given target is in the array.
题意:和leetcode--Search in Rotated Sorted Array一样,但是数组中可能出现重复元素
分类:数组,二分法
解法1:如果遇到无法判断在哪边的元素,说明是重复元素,这时只能遍历查找了
public class Solution {
public boolean search(int[] nums, int target) {
int low = 0;
int high = nums.length-1;
while(low<=high){
int mid = (low+high)/2;
if(nums[mid]==target) return true;
if(nums[mid]>nums[low]){//如果mid属于左边
if(nums[mid]>target && nums[low]<=target){//如果target属于左边
high = mid-1;
}else{
low = mid+1;
}
}else if(nums[mid]<nums[low]){//如果mid属于右边
if(target>nums[mid] && target<=nums[high]){
low = mid+1;
}else{
high = mid-1;
}
}else{
for(int i=low;i<=mid;i++){
if(nums[i]==target) return true;
}
low = mid+1;
}
}
return false;
}
}