class Solution {
  public:
    /**
     *
     * @param A int整型一维数组
     * @param n int A数组长度
     * @param target int整型
     * @return int整型vector
     */
    vector<int> searchRange(int* A, int n, int target) {
        int l = 0, h = n, m;
        int start = -1, end = -1;
        while (l < h) {
            m = (l + h) / 2;
            if (A[m] > target) {
                h = m;
            } else if (A[m] < target) {
                l = m + 1;
            } else {
                int index = m;
                while (index >= 0 && A[index] == target)index--;
                start = index + 1;
                index = m;
                while (index < n && A[index] == target)index++;
                end = index - 1;
                break;
            }
        }
        vector<int> res;
        res.push_back(start);
        res.push_back(end);
        return res;
    }
};