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;
    }
};
相关推荐
QXWZ_IA8 小时前
1库1图1批是什么?千寻位置公安地图数据体系详解
科技·算法·能源·媒体·交通物流·政务
c238569 小时前
Bug 猎手入门指南
c++·算法·bug
Reart9 小时前
Leetcode 213.打家劫舍2(内含闲谈,打劫真是技术活,好题,716)
后端·算法
Reart10 小时前
Leetcode 198.打家劫舍(716)
后端·算法
Jerry10 小时前
LeetCode 110. 平衡二叉树
算法
玖玥拾10 小时前
C++ 数据结构 八大基础排序算法专题
数据结构·c++·算法·排序算法
Tim_1011 小时前
【C++】017、new/delete与malloc/free的区别
java·数据结构·算法
YYYing.11 小时前
【C++大型项目之高性能服务器框架 (七) 】Socket与ByteArray模块
服务器·c++·后端·框架·高性能·c/c++
从零开始的代码生活_11 小时前
C++ list 原理与实践:双向链表、迭代器与简化实现
开发语言·c++·后端·学习·算法·链表·list