leetcode Search in Rotated Sorted Array

来源:互联网 发布:安装包制作工具 知乎 编辑:程序博客网 时间:2024/04/20 23:38

此题同样需要二分法来解决, 但是在判断targetNum在哪一边的时候复杂了一些

首先在左右两边选取顺序没有被打乱的一边

然后判断targetNum是否在该范围内,若在,则在该范围内继续利用二分法,若不在,则在另外一边进行二分查找


代码

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



0 0