Medium

Video StitchingC++

Full explanation · Time O(nlogn) · Space O(1)

// Time:  O(nlogn)
// Space: O(1)

class Solution {
public:
    int videoStitching(vector<vector<int>>& clips, int T) {
        if (T == 0) {
            return 0;
        }
        int result = 1;
        int curr_reachable = 0, reachable = 0;
        sort(clips.begin(), clips.end());
        for (const auto& clip : clips) {
            int left = clip[0], right = clip[1];
            if (left > reachable) {
                break;
            } else if (left > curr_reachable) {
                curr_reachable = reachable;
                ++result;
            }
            reachable = max(reachable, right);
            if (reachable >= T) {
                return result;
            }
        }
        return -1;
    }
};