leetcode search for a range

来源:互联网 发布:图片尺寸测量标注软件 编辑:程序博客网 时间:2024/06/05 22:51
class Solution {public:    vector<int> searchRange(int A[], int n, int target) {        vector<int> ret;        ret.push_back(-1);        ret.push_back(-1);        if(n < 1){            return ret;        }        ret.clear();        int left = 0, right = n - 1;        int recleft = 0x7fffffff, recright = -1;        while(left <= right){            int mid = (left + right) >> 1;            if(A[mid] == target){                //search to left and right                int rec = mid;                while(rec >= 0 && A[rec] == target){                    --rec;                }                //更新recleft和recright时对边界的处理                recleft = rec < 0 ? 0 : (rec + 1);                rec = mid;                while(rec < n && A[rec] == target){                    ++rec;                }                recright = rec >= n ? (n - 1): (rec - 1);                ret.push_back(recleft);                ret.push_back(recright);                //记得及时return!                return ret;            }            else if(A[mid] > target){                right = mid - 1;            }            else{                left = mid + 1;            }        }        ret.push_back(-1);        ret.push_back(-1);        return ret;    }};
0 0
原创粉丝点击