[LeetCode]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.

思考:二分搜索。

class Solution {

public:

    int search(int A[], int n, int target) {

        // IMPORTANT: Please reset any member data you declared, as

        // the same Solution instance will be reused for each test case.

        int left=0;

        int right=n-1;

        int mid;



		while(left<=right)

		{

			mid=(left+right)>>1;

			if(A[mid]==target) return mid;

			else if(A[mid]>=A[left])

			{

				if(A[left]<=target&&target<=A[mid]) right=mid-1;

				else left=mid+1;

			}

			else 

			{

				if(A[mid]<=target&&target<=A[right]) left=mid+1;

				else right=mid-1;

			}

		}



        return -1;

    }

};

  

你可能感兴趣的:(LeetCode)