Java [leetcode 33]Search in Rotated Sorted Array

题目描述:

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.

解题思路:

采用二分查找法查找,若最后没有找到返回-1,否则过程中返回具体的位置。

代码如下:

public class Solution {
    public int search(int[] nums, int target) {
		int left = 0;
		int right = nums.length - 1;
		while (left <= right) {
			int mid = (left + right) / 2;

			if (nums[mid] == target)
				return mid;
			if (nums[left] == target)
				return left;
			if (nums[right] == target)
				return right;

			if (nums[mid] > nums[left]) {
				if (target < nums[mid] && target > nums[left])
					right = mid - 1;
				else
					left = mid + 1;
			} else {
				if (target > nums[mid] && target < nums[right])
					left = mid + 1;
				else
					right = mid - 1;
			}
		}
		return -1;
	}
}
原文地址:https://www.cnblogs.com/zihaowang/p/4960072.html