zoukankan      html  css  js  c++  java
  • [LeetCode] 252. Meeting Rooms

    Given an array of meeting time intervals consisting of start and end times [[s1,e1],[s2,e2],...] (si < ei), determine if a person could attend all meetings.

    Example 1:

    Input: [[0,30],[5,10],[15,20]]
    Output: false
    

    Example 2:

    Input: [[7,10],[2,4]]
    Output: true
    

    NOTE: input types have been changed on April 15, 2019. Please reset to default code definition to get new method signature.

    会议室。给的input是一个二维数组,二维数组里面的每一个元素记录了每个会议的开始时间和结束时间。问同一个人是否有可能参加所有的会议。思路很简单,但是这是LC上算是一种比较特别的题型 - 扫描线。这题的思路是按照会议开始时间给input排序,如果有任何一个会议的结束时间 > 下一个会议的开始时间,就return false。

    时间O(nlogn)

    空间O(1)

    JavaScript实现

     1 /**
     2  * @param {number[][]} intervals
     3  * @return {boolean}
     4  */
     5 var canAttendMeetings = function(intervals) {
     6     let sorted = intervals.sort((a, b) => a[0] - b[0]);
     7     for (let i = 1; i < intervals.length; i++) {
     8         if (sorted[i - 1][1] > sorted[i][0]) {
     9             return false;
    10         }
    11     }
    12     return true;
    13 };

    Java实现

    Java的做法是按照会议结束时间排序,然后从第二个会议开始看,如果有任何一个会议的开始时间早于前一个会议的结束时间,则return false。思路跟JS的版本其实都是类似的,无非是实现方式稍有差异。

     1 class Solution {
     2     public boolean canAttendMeetings(int[][] intervals) {
     3         Arrays.sort(intervals, (a, b) -> a[1] - b[1]);
     4         for (int i = 1; i < intervals.length; i++) {
     5             if (intervals[i][0] < intervals[i - 1][1]) {
     6                 return false;
     7             }
     8         }
     9         return true;
    10     }
    11 }

    扫描线相关题目

    LeetCode 题目总结

  • 相关阅读:
    djano框架根据小牛深入研究
    python raise 是啥东西
    python调request报错
    python当前时间,时间偏移
    写好了,定时任务,怎么让定时任务,去在服务器上跑?
    python实现定时任务-目的解决自动化造数据
    django-celery
    Fruits【水果】
    The Extinction of Some Languages【一些语言的消失】
    Dawson City【道森市】
  • 原文地址:https://www.cnblogs.com/cnoodle/p/11774587.html
Copyright © 2011-2022 走看看