LeetCode: Search in Rotated Sorted Array

来源:互联网 发布:网信办移动网络管理局 编辑:程序博客网 时间:2024/06/05 09:37

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) {        int left = 0, right = n-1, mid = 0;        while(left <= right)        {            mid = (left+right) / 2;            if(A[mid] == target)                return mid;            if(A[mid] >= A[left])            {                if(target >= A[left] && target <= A[mid])                    right = mid-1;                else                    left = mid+1;            }            else            {                if(target >= A[mid] && target <= A[right])                    left = mid+1;                else                    right = mid-1;            }        }        return -1;    }};

Round 2:

class Solution {public:    int search(int A[], int n, int target) {        int l = 0, r = n-1;        while(l <= r)        {            int mid = (l+r)/2;            if(target == A[mid])                return mid;            if(A[mid] < A[r])            {                if(target < A[mid])                {                    r = mid-1;                }                else                {                    if(target <= A[r])                        l = mid+1;                    else                        r = mid-1;                }            }            else            {                if(target > A[mid])                    l = mid+1;                else                {                        if(target >= A[l])                        r = mid-1;                    else                        l = mid+1;                }            }        }        return -1;    }};


0 0
原创粉丝点击