首页 > 其他分享 >1488. 避免洪水泛滥

1488. 避免洪水泛滥

时间:2023-10-14 23:57:31浏览次数:36  
标签:map int res rain 避免 洪水泛滥 1488 空闲 TreeSet

题目

题解

  • 默认对所有天数填写默认值,即都抽 1 号湖泊
  • 用 Map 存储湖泊编号和下雨天的对应关系
  • 把所有的空闲日子(不下雨的天数)存起来,注意要使用 TreeSet,因为后面需要进行比较
  • 遍历数组
    • 不下雨:将 i 天存储到 TreeSet 中,等后面再选择这一天抽哪个湖泊
    • 下雨:如果下雨的湖泊已经有水,则判断有水后至今期间有没有空闲日子
      • 有空闲:设置那天为抽水,并移除该空闲日子,使用 TreeSet.ceiling 方法进行比较
      • 无空闲:直接返回空数字
class Solution {
    public int[] avoidFlood(int[] rains) {
        int[] res = new int[rains.length];
        Arrays.fill(res, 1);
        TreeSet<Integer> freeDay = new TreeSet<>();
        Map<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < rains.length; i++) {
            int rain = rains[i];
            if (rain == 0) {
                // 空闲日子
                freeDay.add(i);
            } else {
                // 下雨
                res[i] = -1;
                if (map.containsKey(rain)) {
                    // 已经有水,则抽掉
                    Integer tp = freeDay.ceiling(map.get(rain));
                    if (tp == null) {
                        return new int[]{};
                    } else {
                        // 用之前存储的空闲天数抽掉 rain 湖泊的水
                        res[tp] = rain;
                        freeDay.remove(tp);
                    }
                }
                map.put(rain, i);
            }
        }
        return res;
    }
}

本文由mdnice多平台发布

标签:map,int,res,rain,避免,洪水泛滥,1488,空闲,TreeSet
From: https://www.cnblogs.com/liuzhihang/p/17764991.html

相关文章

  • 网络规划设计师真题解析--TCP慢启动拥塞避免机制取值问题
    若TCP最大段长为1000字节,在建立连接后慢启动,第1轮次发送了1个段并收到了应答,应答报文中window字段为5000字节,此时还能发送(25)字节。(2019年)(25)A.1000    B.2000     C.3000     D.5000答案:B解析:假如TCP最大段长为1000字节,在建立连接后慢启动第1轮发送了1个段......
  • 创建一个带有重试机制的请求函数,用于避免请求受限或失败时重新尝试请求。
    /***创建一个带有重试机制的请求函数,用于避免请求受限或失败时重新尝试请求。*@param{function}func-要执行的请求函数。*@param{number}maxCount-最大重试次数,默认为10。*@param{number}time-重试间隔时间(毫秒),默认为1500毫秒。*@returns{object}......
  • 如何避免Java内存泄漏,来看看这个
    大家好,我是老七,关注我,将持续更新更多精彩内容!在日常的Java开发中,开发人员经常面临着一种令人难以捉摸且具有潜在破坏性的问题——内存泄漏。尽管Java拥有高效的垃圾收集器(GC),但仍然难以完全避免与内存相关的陷阱。接下来,我们将通过实际示例来深入了解Java中内存泄漏的常见原因。注意......
  • 2023-02-28-如何避免timemachine占用宝贵的mac磁盘空间
    +++title="如何避免timemachine占用宝贵的mac磁盘空间"description=""date=2023-02-28T16:47:50+08:00comment=truetoc=truereward=truecategories=[""]tags=[""]series=[]images=[]+++因为我买的MacBook只有512G的容量......
  • CS2 优化——避免手感粘滞
    最重要的一个,禁用CS2.exe的全屏优化其次nvidia设置是这样游戏里“nvidiareflex低延迟”选择“已启用+加速”......
  • [转]oracle listener.ora中PLSExtPro 和ExtProc的作用(过时组件,官方建议删除以避免漏
    默认安装时,会安装一个PL/SQL外部程序(ExtProc)条目在listener.ora中,是oracle为调用外部程序默认配置的监听,它的名字通常是ExtProc或PLSExtProc,但一般不会使用它,可以直接从listener.ora中将这项移除,因为对ExtProc已经有多种攻击手段了,在不使用外部程序时,oracle也是建议删除的。PLSEx......
  • Effective C++——Item33: 避免隐藏继承的名字
    EffectiveC++——Item33:避免隐藏继承的名字一、从原理理解隐藏从变量作用域看隐藏全局变量x和局部变量x的类型是不同的,但C++的隐藏规则:只隐藏名字(hidingnames)。intx;//globalvariablevoidsomeFunc(){doublex;/......
  • 在光线追踪中避免自相交的方法
    这是我阅读RayTracingGem的一篇笔记,《避免自相交的快速可靠的方法》是RayTracingGem的第六章。这篇博客文章主要是为了记录和解释原文末尾给出的魔法一般的代码。浮点误差数学上给出了很多不同的求解光线与几何体相交的方法,它们都是等价的,但对于计算机而言并不一定。由......
  • 网络规划设计师真题解析--TCP慢启动拥塞避免机制
    TCP使用慢启动拥塞避免机制进行拥塞控制。当拥塞窗口大小为16时,发送节点出现超时未收到确认现象时,将采取的措施是(26)。再经过5轮后的拥塞窗口大小为(27)。26、A.将慢启动阈值设为16,将拥塞窗口设为8,并进入拥塞避免阶段B.将慢启动阈值设为16,将拥塞窗口设为1,并进入慢开始阶段C.将慢启动......
  • 网络规划设计师真题解析--TCP慢启动拥塞避免机制
    TCP使用慢启动拥塞避免机制进行拥塞控制。当拥塞窗口大小为16时,发送节点出现超时未收到确认现象时,将采取的措施是(26)。再经过5轮后的拥塞窗口大小为(27)。26、A.将慢启动阈值设为16,将拥塞窗口设为8,并进入拥塞避免阶段B.将慢启动阈值设为16,将拥塞窗口设为1,并进入慢开始阶段C.将慢启动阈......