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;
    }
};
相关推荐
sin_hielo19 小时前
leetcode 2872
数据结构·算法·leetcode
dragoooon3419 小时前
[优选算法专题八.分治-归并 ——NO.49 翻转对]
算法
AI科技星20 小时前
为什么宇宙无限大?
开发语言·数据结构·经验分享·线性代数·算法
Bona Sun20 小时前
单片机手搓掌上游戏机(十四)—pico运行fc模拟器之电路连接
c语言·c++·单片机·游戏机
Zero-Talent20 小时前
位运算算法
算法
oioihoii20 小时前
性能提升11.4%!C++ Vector的reserve()方法让我大吃一惊
开发语言·c++
不穿格子的程序员20 小时前
从零开始刷算法——双指针-三数之和&接雨水
算法·双指针
合方圆~小文21 小时前
AI摄像头精准识别技术依赖于深度算法
数据结构·数据库·数码相机·模块测试
小狗爱吃黄桃罐头21 小时前
《C++ Primer Plus》模板类 Template 课本实验
c++
无限进步_21 小时前
C语言数组元素删除算法详解:从基础实现到性能优化
c语言·开发语言·windows·git·算法·github·visual studio