题目描述
给定一个会议时间安排的数组 intervals ,每个会议时间都会包括开始和结束的时间 intervals[i] = [starti, endi] ,请你判断一个人是否能够参加这里面的全部会议。
示例 1:
输入:intervals = [[0,30],[5,10],[15,20]] 输出:false 示例 2:
输入:intervals = [[7,10],[2,4]] 输出:true
提示:
0 <= intervals.length <= 104 intervals[i].length == 2 0 <= starti < endi <= 106
来源:力扣(LeetCode) 链接:leetcode-cn.com/problems/me… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路
- 对开始时间进行排序;
- 对会议结束时间进行比较;
时空复杂度
- 时间复杂度:O(nlogn),时间复杂度由排序决定,一旦完成排序,只需遍历一遍O(n)来判断是否重叠即可。
- 空间复杂度:O(1),没有使用额外的空间;
代码
function canAttendMeetings(intervals: number[][]): boolean {
// 1对开始时间进行排序;
let meetings=intervals.sort((a:number[],b:number[])=>{
return a[0]-b[0]
});
// 2对会议结束时间进行比较;
for(let i=0;i<meetings.length-1;i++){
if(meetings[i][1]>meetings[i+1][0]){
return false
}
}
return true;
};
往期动态规划回顾
完全背包🎒问题
【温故知新】322. 零钱兑换 动画演示-完全背包问题最小解-动态规划实现
【温故知新】518. 零钱兑换 II 完全背包问题组合解-动态规划实现
【温故知新】377. 组合总和 Ⅳ 完全背包问题排列解-动态规划实现
【温故知新】70. 爬楼梯进阶版 完全背包🎒问题AC-动态规划实现
01背包🎒问题
【温故知新】474. 一和零 01背包🎒问题最大解-动态规划实现
【温故知新】494. 目标和 表达式转化为01背包🎒问题-动态规划实现