[leetcode]81. Search in Rotated Sorted Array II(Java)

来源:互联网 发布:mac 风扇声音很大 编辑:程序博客网 时间:2024/05/21 11:09

https://leetcode.com/problems/search-in-rotated-sorted-array-ii/#/description


Follow up for "Search in Rotated Sorted Array":
What if duplicates are allowed?

Would this affect the run-time complexity? How and why?

Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.

(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).

Write a function to determine if a given target is in the array.

The array may contain duplicates.

package go.jacob.day702;public class Demo1 {public boolean search(int[] nums, int target) {if (nums == null || nums.length < 1)return false;int left = 0, right = nums.length - 1;int mid;while (left <= right) {mid = left + (right - left) / 2;if (target == nums[mid]) {return true;}if (nums[mid] > nums[left]) {if (target < nums[mid] && target >= nums[left])right = mid - 1;elseleft = mid + 1;} else if (nums[mid] < nums[left]) {if (target > nums[mid] && target <= nums[right])left = mid + 1;elseright = mid - 1;} else {// nums[left]==nums[mid]if (nums[right] > nums[mid] && target > nums[mid] && target <= nums[right])left = mid + 1;else {//如果left,mid,right三个元素都相同,或者left,mid相同,//target不在[mid,right]递增区间里,只能循环遍历for (int i = left; i <= right; i++)if (target == nums[i]) {return true;}break;}}}return false;}}


原创粉丝点击