Search in Rotated Sorted Array II LeetCode Java
Posted 昵称真难想
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Search in Rotated Sorted Array II LeetCode Java相关的知识,希望对你有一定的参考价值。
描述
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.
分析
允许重复元素,则上一题中如果 A[m]>=A[l], 那么 [l,m] 为递增序列的假设就不能成立了,比
如 [1,3,1,1,1]。
如果 A[m]>=A[l] 不能确定递增,那就把它拆分成两个条件:
? 若 A[m]>A[l],则区间 [l,m] 一定递增
? 若 A[m]==A[l] 确定不了,那就 l++,往下看一步即可。
二分查找
代码
1 // LeetCode, Search in Rotated Sorted Array II 2 // 时间复杂度 O(log n),空间复杂度 O(1) 3 class Solution { 4 public static boolean search(int A[], int n, int target) { 5 int first = 0, last = n; 6 while (first != last) { 7 int mid = (first + last) / 2; 8 if (A[mid] == target) 9 return true; 10 if (A[first] < A[mid]) { 11 if (A[first] <= target && target < A[mid]) 12 last = mid; 13 else 14 first = mid + 1; 15 } else if (A[first] > A[mid]) { 16 if (A[mid] <= target && target <= A[last-1]) 17 first = mid + 1; 18 else 19 last = mid; 20 } else 21 //skip duplicate one, A[start] == A[mid] 22 first++; 23 } 24 return false; 25 } 26 }
以上是关于Search in Rotated Sorted Array II LeetCode Java的主要内容,如果未能解决你的问题,请参考以下文章
Search in Rotated Sorted Array
33. Search in Rotated Sorted Array
33. Search in Rotated Sorted Array
33. Search in Rotated Sorted Array