Karellism icon

LeetCode C++ Binary Search

Karellism | PRO | 03/13/19 07:38:49 PM UTC | 0 ⭐ | 245 👁️ | Never ⏰ | []
C++ |

1.31 KB

|

None

|

0 👍

/

0 👎

class Solution {
public:
    vector<int> searchRange(vector<int>& nums, int target) {
        vector<int> result;
        int left_i = searchLeftIndex(nums, target),
            right_i = searchRightIndex(nums, target);
            
        cout << left_i << endl;
        cout << right_i << endl;
        if (left_i < nums.size() && nums[left_i] == target) {
            result.push_back(left_i);
            result.push_back(right_i);
        } else {
            result.push_back(-1);
            result.push_back(-1);            
        }
        return result;
    }
    
    int searchLeftIndex(vector<int>& nums, int target) {
        int left = 0, right = nums.size();
        while(left < right) {
            int mid = left + (right - left)/2;
            if (nums[mid] >= target) {
                right = mid;
            } else {
                left = mid + 1;
            }
        }
        return left;
    }
    
    int searchRightIndex(vector<int>& nums, int target) {
        int left = 0, right = nums.size();
        while(left < right) {
            int mid = left + (right - left)/2;
            if (nums[mid] > target) {
                right = mid;
            } else {
                left = mid + 1;
            }
        }
        return right-1;        
    }
};

Comments