欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

LeetCode 2201. 统计可以提取的工件(哈希)

发布时间:2024/7/5 66 豆豆
生活随笔 收集整理的这篇文章主要介绍了 LeetCode 2201. 统计可以提取的工件(哈希) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

存在一个 n x n 大小、下标从 0 开始的网格,网格中埋着一些工件。给你一个整数 n 和一个下标从 0 开始的二维整数数组 artifacts ,artifacts 描述了矩形工件的位置,其中 artifacts[i] = [r1i, c1i, r2i, c2i] 表示第 i 个工件在子网格中的填埋情况:

  • (r1i, c1i) 是第 i 个工件 左上 单元格的坐标,且
  • (r2i, c2i) 是第 i 个工件 右下 单元格的坐标。

你将会挖掘网格中的一些单元格,并清除其中的填埋物。
如果单元格中埋着工件的一部分,那么该工件这一部分将会裸露出来。
如果一个工件的所有部分都都裸露出来,你就可以提取该工件。

给你一个下标从 0 开始的二维整数数组 dig ,其中 dig[i] = [ri, ci] 表示你将会挖掘单元格 (ri, ci) ,返回你可以提取的工件数目

生成的测试用例满足:

  • 不存在重叠的两个工件。
  • 每个工件最多只覆盖 4 个单元格。
  • dig 中的元素互不相同。
示例 1: 输入:n = 2, artifacts = [[0,0,0,0],[0,1,1,1]], dig = [[0,0],[0,1]] 输出:1 解释: 不同颜色表示不同的工件。挖掘的单元格用 'D' 在网格中进行标记。 有 1 个工件可以提取,即红色工件。 蓝色工件在单元格 (1,1) 的部分尚未裸露出来,所以无法提取该工件。 因此,返回 1 。 示例 2: 输入:n = 2, artifacts = [[0,0,0,0],[0,1,1,1]], dig = [[0,0],[0,1],[1,1]] 输出:2 解释:红色工件和蓝色工件的所有部分都裸露出来(用 'D' 标记),都可以提取。因此,返回 2 。 提示: 1 <= n <= 1000 1 <= artifacts.length, dig.length <= min(n2, 10^5) artifacts[i].length == 4 dig[i].length == 2 0 <= r1i, c1i, r2i, c2i, ri, ci <= n - 1 r1i <= r2i c1i <= c2i 不存在重叠的两个工件 每个工件 最多 只覆盖 4 个单元格 dig 中的元素互不相同

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/count-artifacts-that-can-be-extracted
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 把坐标位置 哈希化(x*k+y) 存入哈希表
  • 遍历所有的工件的所有位置,去哈希表里查找,如果有不存在的就不能挖出来
class Solution { public:int digArtifacts(int n, vector<vector<int>>& artifacts, vector<vector<int>>& dig) {unordered_set<int> d;for(auto& di : dig)d.insert((di[0]<<10)+di[1]);int ans = 0;for(auto& a : artifacts){int r1 = a[0], r2 = a[2], c1 = a[1], c2 = a[3];bool ok = true;for(int i = r1; i <= r2; ++i){for(int j = c1; j <= c2; ++j){int hash = (i<<10)+j;if(d.find(hash) == d.end()){ok = false;break;}}if(!ok) break;}if(ok)ans++;}return ans; } };

428 ms 158.6 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

创作挑战赛新人创作奖励来咯,坚持创作打卡瓜分现金大奖

总结

以上是生活随笔为你收集整理的LeetCode 2201. 统计可以提取的工件(哈希)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。