LeetCode:Search in Rotated Sorted Array

来源:互联网 发布:天津职业大学赛尔网络 编辑:程序博客网 时间:2024/06/14 20:03

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.

// https://leetcode.com/problems/search-in-rotated-sorted-array/// Author : Chao Zeng// Date   : 2015-3-31class Solution {public:    int search(int A[], int n, int target) {        int left = 0, right = n - 1;        while (left <= right){            int mid = (left + right)/2;            if (A[mid] == target)                return mid;            if (A[right] > A[left]){//判断已排序数组是升序还是降序                if (target < A[mid])                    right = mid - 1;                else if (target > A[mid])                    left = mid + 1;                else                    return mid;            }            else{                if (A[left] < A[mid])                {                    if (target <= A[mid] && target >= A[left])//注意=号                        right = mid - 1;                    else                        left = mid + 1;                }                else if (A[left] > A[mid])                {                    if (target >= A[left] || target <= A[mid])                        right = mid - 1;                    else                        left = mid + 1;                }                else{                    if (A[left] == target)                        return left;                    else                        left++;                }            }        }        return -1;    }};


0 0
原创粉丝点击