题目
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.
分析Search in Rotated Sorted Array里那套代码不好使了,因为重复元素造成无法判断究竟该向左还是向右,这时候只能用O(n)的方式慢慢找。
代码
public class SearchInRotatedSortedArrayII { public boolean search(int[] A, int target) { if (A == null || A.length == 0) { return false; } int low = 0; int high = A.length - 1; while (low <= high) { int mid = low + (high - low) / 2; if (target == A[mid]) { return true; } if (A[low] < A[mid]) {// left half is sorted if (A[low] <= target && target < A[mid]) { high = mid - 1; } else { low = mid + 1; } } else if (A[low] > A[mid]) { // right half is sorted if (A[mid] < target && target <= A[high]) { low = mid + 1; } else { high = mid - 1; } } else { ++low; } } return false; } }
LeetCode | Search in Rotated Sorted Array II,布布扣,bubuko.com
LeetCode | Search in Rotated Sorted Array II
原文:http://blog.csdn.net/perfect8886/article/details/22819531