diff --git a/3440. Reschedule Meetings for Maximum Free Time II b/3440. Reschedule Meetings for Maximum Free Time II new file mode 100644 index 0000000..e9993d7 --- /dev/null +++ b/3440. Reschedule Meetings for Maximum Free Time II @@ -0,0 +1,24 @@ +class Solution { +public: + int maxFreeTime(int eventTime, vector& startTime, + vector& endTime) { + vector gap(1, startTime[0]); + for (int i = 1; i < startTime.size(); ++i) + gap.push_back(startTime[i] - endTime[i - 1]); + gap.push_back(eventTime - endTime.back()); + + vector largestRight(gap.size(), 0); + for (int i = gap.size() - 2; i >= 0; --i) + largestRight[i] = max(largestRight[i + 1], gap[i + 1]); + + int ans = 0, largestLeft = 0; + for (int i = 1; i < gap.size(); ++i) { + int curGap = endTime[i - 1] - startTime[i - 1]; + if (curGap <= max(largestLeft, largestRight[i])) + ans = max(ans, gap[i - 1] + gap[i] + curGap); + ans = max(ans, gap[i - 1] + gap[i]); + largestLeft = max(largestLeft, gap[i - 1]); + } + return ans; + } +};