zoukankan      html  css  js  c++  java
  • [Algorithm] How many meeting rooms needed?

    Give you set of meetings start time and end time, count how many meeting rooms needed.

    For example:

    [[2, 5], [1, 3], [2, 7], [6, 8]] // needs 3 meeting rooms

    We can use a memo table to store the at which time how many rooms needed. It is sort of like Knapsack problem. Check out this post for similar question.

    Code:

    function* generateAry(start, end) {
      let i = start;
      while (i <= end) {
        yield i;
        i++;
      }
    }
    
    // O(N*K): K: number of hours, N: number of room
    // S(K)
    function availableRoom(arys) {const { min, max } = arys.reduce(
        (acc, ary) => {
          const [start, end] = ary;
          let { min, max } = acc;
          if (start < min) {
            min = start;
          }
          if (end > max) {
            max = end;
          }
          return { min, max };
        },
        { min: Infinity, max: 0 }
      );
      const hours = Array.from(generateAry(min, max));
      const memo = hours.map(x => 0);
    
      function helper(arys, hours, memo) {
        let countRooms = 0;
    
        for (let row in arys) {
          for (let col in hours) {
            let prevCount = memo[col];
            let [min, max] = arys[row];
            // if the min > hour, set previous row same col value, the same as max < hour
            if (min > hours[col] || max < hours[col]) {
              memo[col] = prevCount;
              continue;
            }
    
            if (min <= hours[col] && max >= hours[col]) {
              memo[col] = prevCount + 1;
            }
    
            countRooms = Math.max(countRooms, memo[col]);
          }
        }
        console.log(memo); // [1, 3, 3, 2, 2, 2, 2, 1]
        return countRooms;
      }
    
      return helper(arys, hours, memo);
    }
    
    console.log(availableRoom([[2, 5], [1, 3], [2, 7], [6, 8]])); // 3
  • 相关阅读:
    maven常用仓库
    AD域安装及必要设置
    oracle创建表空间
    javascript弹出模态窗体
    win8.1 AMD 屏幕亮度无法调整
    tomcat优化
    CentOS 6.2 中文
    tomcat之JNDI数据源配置
    eclipse中tomcat配置(待完善)
    Ant打jar包指定MainClass
  • 原文地址:https://www.cnblogs.com/Answer1215/p/10605000.html
Copyright © 2011-2022 走看看