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]){
- if(nums[mid]>target && nums[low]<=target){
- high = mid-1;
- }else{
- low = mid+1;
- }
- }else if(nums[mid]<nums[low]){
- 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;
- }
- }
原文链接http://blog.youkuaiyun.com/crazy__chen/article/details/46427185