zoukankan      html  css  js  c++  java
  • [leetCode]1109. 航班预订统计

    暴力法

    class Solution {
        public int[] corpFlightBookings(int[][] bookings, int n) {
            int[] ans = new int[n];
            for (int i = 0; i < bookings.length; i++) {
                for (int j = bookings[i][0] - 1; j < bookings[i][1]; j++) {
                    ans[j]+= bookings[i][2];
                }
            }
            return ans;
        }
    }
    

    公交车算法

    1. 将问题转换为:某公交车共有 n 站,第 i 条记录 bookings[i] = [i, j, k] 表示在 i 站上车 k 人,乘坐到 j 站,在 j+1 站下车,需要按照车站顺序返回每一站车上的人数
    2. 根据 1 的思路,定义 counter[] 数组记录每站的人数变化,counter[i] 表示第 i+1 站。遍历 bookings[]:bookings[i] = [i, j, k] 表示在 i 站增加 k 人即 counters[i-1] += k,在 j+1 站减少 k 人即 counters[j] -= k
      遍历(整理)counter[] 数组,得到每站总人数: 每站的人数为前一站人数加上当前人数变化 counters[i] += counters[i - 1]
    class Solution {
        public int[] corpFlightBookings(int[][] bookings, int n) {
            int[] counter = new int[n];
            for (int[] book : bookings) {
                counter[book[0]-1] += book[2];
                if (book[1] < n) {
                    counter[book[1]] -= book[2];
                }
            }
            for (int i = 1; i < n; i++) {
                counter[i] += counter[i-1];
            }
            return counter;
        }
    }
    
  • 相关阅读:
    REUSE_ALV_GRID_DISPLAY_LVC I_CALLBACK_HTML_TOP_OF_PAGE
    查找数组中最大值java
    jvm 调优
    jvm 内存
    树形遍历文件夹
    程序创建一个ArrayList,添加1到10的10个随机数,删除大于5的数 java
    字符串反序排序 并带有空格输出 java
    摆动排序
    免密登陆
    springboot UEditor集成
  • 原文地址:https://www.cnblogs.com/PythonFCG/p/13859917.html
Copyright © 2011-2022 走看看