• LeetCode 253 会议室②


    给你一个会议时间安排的数组 intervals ,每个会议时间都会包括开始和结束的时间 intervals[i] = [starti, endi] ,返回 所需会议室的最小数量 。

    示例 1:

    输入:intervals = [[0,30],[5,10],[15,20]]
    输出:2

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/meeting-rooms-ii
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    思路:考虑转换为公交上下车,车上最多有多少人的问题,其实本质是一样的,我们只需要知道有哪些会议时间有冲突,即同一时刻在开的会议数量的最大值。可以有如下设计,会议开始时会议数量+1,会议结束时会议数量-1,如此可以将会议的开始和结束时间拆成两个类型,统一排序,进行一次遍历,遍历过程中最大的会议数量即是所需要的最少的会议室的数量。

    func minMeetingRooms(intervals [][]int) int {
        nodes := make(Nodes, 0, len(intervals)*2)
        for _, interval := range intervals {
            nodes = append(nodes, Node{
                time: interval[0],
                _type: 1,
            }, Node{
                time: interval[1],
                _type: -1,
            })
        }
        sort.Sort(nodes)
        ret := 0
        max := 0
        for _, node := range nodes {
            ret += node._type
            if max<ret {
                max = ret
            }
        }
        return max
    }
    
    type Node struct {
        time int
        _type int
    }
    
    type Nodes []Node
    
    func (n Nodes) Len() int {
        return len(n)
    }
    
    func (n Nodes) Swap(i, j int) {
        n[i], n[j] = n[j], n[i]
    }
    
    func (n Nodes) Less(i, j int) bool {
        if n[i].time == n[j].time {
            return n[i]._type == -1
        }
        return n[i].time<n[j].time
    }
    

      

  • 相关阅读:
    MySQL — 优化之explain执行计划详解(转)
    项目中常用的MySQL 优化
    通过 MySQL 存储原理来分析排序和锁(转)
    java内存模型(转)
    数据库索引的创建原则
    MySQL中的几种日志了解
    一条SQL语句在MySQL中如何执行的
    SQL
    SQL
    SqlServer性能优化 查询和索引优化(十二)
  • 原文地址:https://www.cnblogs.com/aboutblank/p/15912609.html
Copyright © 2020-2023  润新知