Description
这题类似合并区间,题意你们都能看懂吧……
Solution
这道题就需要用到合并区间的方法。
答案等于 daysdaysdays 减「有会议安排的天数」。
对左端点进行排序,计算有会议安排的天数,累加每个区间的长度,即为有会议安排的天数。
由于本题只需计算合并区间的长度,所以只需记录当前合并区间的左右端点。
Code(C++、Python3)
C++
class Solution {
public:int countDays(int days, vector<vector<int>>& meetings) {ranges::sort(meetings);int start = 1, end = 0;for (auto &m : meetings) {int s = m[0], e = m[1];if (s > end) {days -= end - start + 1;start = s;}end = max(end, e);}days -= end - start + 1;return days;}
};
Python3
注意,这里Python排序时不写 lambdalambdalambda 是可以的,但时间会慢。
class Solution:def countDays(self, days: int, meetings: List[List[int]]) -> int:meetings.sort(key=lambda p: p[0])start, end = 1, 0for s, e in meetings:if s > end:days -= end - start + 1start = send = max(end, e)days -= end - start + 1return days
欢迎大家关注LeetCode——C2h6oqwq。也恳求大家点赞收藏加关注~~~