day11力扣打卡

打卡记录

避免洪水泛滥(贪心 + Map + Set)

链接

将晴天的日期全部记录到 set 中。

使用 unordered_map 来记录每个湖泊上一次下雨的日期。

当下雨时,湖泊已经水满了时,查询到上次下雨的日期。

通过这个日期在晴天记录中查找对应的晴天日期。

如果找到了,就可以使用那一天抽水,找不到就不可避免的洪水了。

cpp 复制代码
class Solution {
public:
    vector<int> avoidFlood(vector<int>& rains) {
        int n = rains.size();
        vector<int> ans(n, 1);
        unordered_map<int, int> water;
        set<int> zero;
        for (int i = 0; i < n; ++i) {
            if (rains[i] == 0) {
                zero.insert(i);
                continue;
            }
            else if (water.count(rains[i])) {
                auto it = zero.lower_bound(water[rains[i]]);
                if (it == zero.end()) return {};
                ans[*it] = rains[i];
                zero.erase(it);
            }
            water[rains[i]] = i;
            ans[i] = -1;
        }
        return ans;
    }
};
相关推荐
moonlifesudo4 分钟前
322:零钱兑换(三种方法)
算法
感哥10 小时前
C++ 多态
c++
沐怡旸17 小时前
【底层机制】std::string 解决的痛点?是什么?怎么实现的?怎么正确用?
c++·面试
NAGNIP18 小时前
大模型框架性能优化策略:延迟、吞吐量与成本权衡
算法
美团技术团队19 小时前
LongCat-Flash:如何使用 SGLang 部署美团 Agentic 模型
人工智能·算法
River41620 小时前
Javer 学 c++(十三):引用篇
c++·后端
感哥1 天前
C++ std::set
c++
Fanxt_Ja1 天前
【LeetCode】算法详解#15 ---环形链表II
数据结构·算法·leetcode·链表
侃侃_天下1 天前
最终的信号类
开发语言·c++·算法
茉莉玫瑰花茶1 天前
算法 --- 字符串
算法