【题目描述】
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.
跟进“搜索旋转排序数组”,假如有重复元素又将如何?是否会影响运行时间复杂度?如何影响?为何会影响?写出一个函数判断给定的目标值是否出现在数组中。
【题目链接】
www.lintcode.com/en/problem/search-in-rotated-sorted-array-ii/
【题目解析】
和这题的第一版本类似,只是可能出现重复数字,而有了重复数字会使问题变得非常复杂。
例如对于数组 1 2 2 2 2 2 3,对第1个2进行翻转后,会得到2 2 2 2 3 1 2,这个数组首尾下标为0和6,得到中间位置的下标为3,于是首尾和中间位置的元素都相同,我们无法判断索要找的数字是在前半段还是在后半段,这种情况下,只能够从头开始以O(n)时间进行一次搜索。
如果不是以上的情况,还是可以按照第一版本的思路进行二分查找。
【参考答案】
www.jiuzhang.com/solutions/search-in-rotated-sorted-array-ii/