题解 | #在旋转过的有序数组中寻找目标值#

在旋转过的有序数组中寻找目标值

http://www.nowcoder.com/practice/87c0e7abcbda41e7963660fa7d020995

class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @param target int整型 * @return int整型 */ int search(vector& nums, int target) { // write code here //这题直接遍历就能水过,二分的方法如下: //首先你要判断target位于哪个区间部分 if(target==nums[0]) return 0; return process(nums,0, nums.size()-1,target); } int process(vectorarray,int low,int high,int k) { if(low>high) return -1; int mid=(low+high)/2; if(array[mid]==k) return mid; if(array[mid]<k&&k<array[0]) return process(array, mid+1,high, k);

    else if(array[mid]<k&&array[mid]>=array[0])
        return process(array, mid+1, high, k);
    
    
   else if(array[mid]<k&&k>array[0]&&array[mid]<array[0])
        return process(array, low, mid-1, k);
    
    
    if(array[mid]>k&&k>array[0])
       return process(array, low, mid-1,  k);
    else if(array[mid]>k&&array[mid]<array[0])
        return process(array, low, mid-1,  k);
     else if(array[mid]>k&&array[mid]>=array[0]&&k<array[0])
        return process(array, mid+1, high, k);
    else return -1;
}

};

全部评论

相关推荐

点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务