#leetcode#Search in Rotated Sorted Array II
2015-05-24 13:48
387 查看
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大体差不多, 一共有三种情况:
1. L < M < R 整段有序
2. L > M && M < R, 此时右半部分有序
3. L < M && M > R,此时左半段有序
则我们在判断的时候用L和R跟M比较都可以,
以L做比较, 则当 L < M, 对应上面的 1&3两种case, 都是左半段有序, 如果Target
>= L && Target < M, 则二分向左走, else,向右走
当L > M, 对应case1, 右半段有序, 则 if target > M && target <= right, 二分向右走, else 向左走
最后是对duplicates的处理, L == M,则 left++,
当所有elements都是duplicates时, 最差复杂度是
O(n)
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大体差不多, 一共有三种情况:
1. L < M < R 整段有序
2. L > M && M < R, 此时右半部分有序
3. L < M && M > R,此时左半段有序
则我们在判断的时候用L和R跟M比较都可以,
以L做比较, 则当 L < M, 对应上面的 1&3两种case, 都是左半段有序, 如果Target
>= L && Target < M, 则二分向左走, else,向右走
当L > M, 对应case1, 右半段有序, 则 if target > M && target <= right, 二分向右走, else 向左走
最后是对duplicates的处理, L == M,则 left++,
当所有elements都是duplicates时, 最差复杂度是
O(n)
public class Solution { public boolean search(int[] nums, int target) { if(nums == null || nums.length == 0) return false; int left = 0; int right = nums.length - 1; while(left <= right){ int mid = left + (right - left) / 2; if(nums[mid] == target) return true; if(nums[left] > nums[mid]){ if(nums[mid] < target && nums[right] >= target){ left = mid + 1; }else{ right = mid - 1; } }else if(nums[left] < nums[mid]){ if(nums[mid] > target && nums[left] <= target){ right = mid - 1; }else{ left = mid + 1; } }else{ left++; } } return false; } }
相关文章推荐
- Leetcode 81. Search in Rotated Sorted Array II
- [LeetCode]Search in Rotated Sorted Array II
- [leetcode]Search in Rotated Sorted Array II @ Python
- [LeetCode] Search in Rotated Sorted Array II 解题报告
- [leetcode] 81. Search in Rotated Sorted Array II
- 解题报告:LeetCode Search in Rotated Sorted Array II(循环数字查找)
- 个人记录-LeetCode 81. Search in Rotated Sorted Array II
- LeetCode - Search in Rotated Sorted Array II
- leetcode - Search in Rotated Sorted Array II
- leetcode - 81.Search in Rotated Sorted Array II
- Java for LeetCode 081 Search in Rotated Sorted Array II
- leetcode:Search in Rotated Sorted Array II
- [leetcode] 81. Search in Rotated Sorted Array II
- [LeetCode] 098: Search in Rotated Sorted Array II
- [LeetCode]Search in Rotated Sorted Array I&II
- Leetcode 81. Search in Rotated Sorted Array II (Medium) (java)
- LeetCode——Search in Rotated Sorted Array II
- LeetCode 33. Search in Rotated Sorted Array && 81. Search in Rotated Sorted Array II
- LeetCode: Search in Rotated Sorted Array II
- LeetCode--search-in-rotated-sorted-array-ii