Time Cost

8min37s

Code

  • My Solution
    class Solution {
    public:
      vector<int> searchRange(vector<int>& nums, int target) {
          if (nums.size() == 0) return {-1, -1};
          int base = 0, ceil = nums.size() - 1;
          int index = (base + ceil) / 2, left = -1, right = -1;
    
          while (base <= ceil) {
              if (nums[index] == target) {
                  left = right = index;
                  // left forward
                  for (int i=index-1; i>=0; i--) {
                      if (nums[i] != target) {
                          break;
                      }
                      left = i;
                  }
                  for (int i=index+1; i<nums.size(); i++) {
                      if (nums[i] != target) {
                          break;
                      }
                      right = i;
                  }
                  break;
              }else if (nums[index] < target) {
                  base = index + 1;
              }else {
                  ceil = index - 1;
              }
              index = (base + ceil) / 2;
          }
    
          return {left, right};
      }
    };