【温故知新】`252. 会议室` 排序遍历

371 阅读1分钟

题目描述

给定一个会议时间安排的数组 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背包🎒问题-动态规划实现

【温故知新】1049. 最后一块石头的重量 II 最小重量转化为01背包🎒问题最大解-动态规划实现

【温故知新】416. 分割等和子集01背包🎒问题存在解-动态规划实现