public class { public int search(int[] nums, int target) { return helper(nums, 0, nums.length - 1, target); } public int helper(int[] nums, int left, int right, int target) { if(left > right) { return -1; } int mid = left + (right-left) / 2; if(nums[mid] == target) { return mid; } int val1 = -1; int val2 = -1; if(nums[left] < nums[mid]) { val1 = binarySearch(nums,left, mid - 1,target); val2 = helper(nums,mid + 1, right,target); } else { val1 = binarySearch(nums,mid + 1, right,target); val2 = helper(nums,left, mid - 1,target); } if(val1 == -1) { return val2; } else { return val1; } } public int binarySearch(int nums[], int left, int right, int target) { if(left > right) { return -1; } int mid = left + (right-left) / 2; if(nums[mid] == target) { return mid; } if(nums[mid] > target) { return binarySearch(nums, left, mid - 1, target); } else { return binarySearch(nums, mid + 1, right, target); } } }
|
近期评论