코테준비 - Find First and Last Position of Element in Sorted Array

정상화·2023년 2월 26일

LeetCode

목록 보기
32/222

Find First and Last Position of Element in Sorted Array

class Solution {
public:
    vector<int> searchRange(vector<int> &nums, int target) {
        if(nums.empty()) return {-1, -1};
        int min = INT32_MAX;
        int max = INT32_MIN;

        // find min
        int l = 0;
        int r = nums.size() - 1;
        int mid;
        while (l < r) {
            mid = (l + r) / 2;
            if (nums.at(mid) > target) {
                r = mid;
            } else {
                if (nums.at(mid) == target && mid > max) {
                    max = mid;
                }
                l = mid + 1;
            }
        }
        cout << "DEBUG"<<  l << " " << r << "\n";
        if (nums.at(r) == target && r > max) {
            max = r;
        }
        l = 0;
        r = nums.size() - 1;
        while (l < r) {
            if (nums.at(l) == target && l < min) {
                min = l;
            }
            mid = (l + r) / 2;
            if (nums.at(mid) >= target) {
                if (nums.at(mid) == target && mid < min) {
                    min = mid;
                }
                r = mid - 1;
            } else {
                l = mid + 1;
            }
        }
        cout << "DEBUG"<<  l << " " << r << "\n";
        if (nums.at(l) == target && l < min) {
            min = l;
        }
        if (min == INT32_MAX) return {-1, -1};
        return {min, max};
    }
};
profile
백엔드 희망

0개의 댓글