Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.

0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).

Write a function to determine if a given target is in the array.

The array may contain duplicates.

answer:

class Solution {
public:
    bool search(vector<int>& nums, int target) {
        int length = nums.size();
        if(length == 0) return false;
        if(nums[0] > target){
            for(int i = length - 1; i > 0; i --){
                if(nums[i] == target) return true;
                if(nums[i] < nums[i - 1]) return false;
            }
        }
        else if(nums[0] < target){
            for(int i = 0; i < length; i ++){
                if(nums[i] == target) return true;
                if(i < length - 1 && nums[i] > nums[i + 1]) return false;
            }
        }
        else return true;
        return false;
    }
};