日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2024/7/5 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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. 统计可以提取的工件(哈希)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。