Search in Rotated Sorted Array

来源:互联网 发布:如何看软件版本 编辑:程序博客网 时间:2024/05/22 02:08

Suppose a sorted array 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).

You are given a target value to search. If found in the array return its index, otherwise return -1.

You may assume no duplicate exists in the array.

public static int search(int[] nums, int target){int start=0,end=nums.length-1;while(start<end){int mid=start+(end-start)/2;if(nums[mid]==target)return mid;if(nums[start]<=nums[mid]){if(nums[start]<=target&&target<nums[mid])end=mid-1;elsestart=mid+1;}else{if(nums[end]>=target&&target>nums[mid])start=mid+1;elseend=mid-1;}}return -1;}

Follow up for "Search in Rotated Sorted Array": what if duplicates are allowed?
Write a function to determine if a given target is in the array.

public static boolean search2(int[] nums, int target){int start=0,end=nums.length-1;while(start<=end){int mid=start+(end-start)/2;if(nums[mid]==target)return true;if(nums[start]<nums[mid]){if(nums[start]<=target&&target<nums[mid])end=mid-1;elsestart=mid+1;}else if(nums[start]>nums[mid]){if(nums[end]>=target&&target>nums[mid])start=mid+1;elseend=mid-1;}elsestart++;}return false;}



0 0
原创粉丝点击