news 2026/4/15 10:50:26

leetcode 困难题 827. Making A Large Island 最大人工岛

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
leetcode 困难题 827. Making A Large Island 最大人工岛

Problem: 827. Making A Large Island 最大人工岛

解题过程

首先统计了所有的1区块,并将坐标放入列表中,对每个区块,拿到距离最近的两个点坐标,若是abs(x-xx) + abs(y-yy)==2,则表示可以connected,将可能的grid[i][j]==0点放入哈希表并累加计数,这种方式比较慢,超时了

最后用了标记的方式,对每个区块标记一个记号,并用哈希表记录这个记号对应的区块大小,对每个grid[i][j]==0,上下左右累加哈希表中记号对应的大小即可,不能重复累加同一个标记区块,拿到最大值即可,计算量大大减小了

Code

class Solution { public: vector<vector<bool>> status; int dir[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}}, n; int cnt = 0, cntcnt = 100; unordered_map<int, int> umpump; void dfs(vector<vector<int>>& grid, int x, int y) { status[x][y] = true; int xx, yy; cnt++; for(int i = 0; i < 4; i++) { xx = x + dir[i][0]; yy = y + dir[i][1]; if(xx>=0 && yy>=0 && xx < n && yy < n && grid[xx][yy]==1 && status[xx][yy]==false) { dfs(grid, xx, yy); } } grid[x][y] = cntcnt; } int largestIsland(vector<vector<int>>& grid) { n = grid.size(); status.assign(n, vector<bool>(n, false)); bool zero = false; int mx = INT_MIN; for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { if(grid[i][j] == 1 && status[i][j] == false) { cnt = 0; cntcnt++; dfs(grid, i, j); umpump[cntcnt] = cnt; mx = max(mx, cnt); } if(grid[i][j]==zero) zero = true; } } if(umpump.size()==1) { return mx + (int)zero; } if(umpump.size()==0) { return (int)zero; } int x, y; for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { if(grid[i][j] == 0) { int sum = 1; unordered_set<int> te; for(int k = 0; k < 4; k++) { x = i + dir[k][0]; y = j + dir[k][1]; if(x >= 0 && y >= 0 && x < n && y < n && grid[x][y]!=0) { if(te.find(grid[x][y]) == te.end()) { sum += umpump[grid[x][y]]; } te.insert(grid[x][y]); } } mx = max(mx, sum); } } } return mx; // for(int i = 0; i < tr.size(); i++) { // mx = max(mx, (int)tr[i].size()); // } // unordered_map<int, unordered_set<int>> ump; // int x, y, tx, ty, px, py; // vector<pair<int, int>> p1, p2; // float d1, d2, dis; // for(int i = 0; i < tr.size(); i++) { // p1 = tr[i]; // for(int j = i + 1; j < tr.size(); j++) { // p2 = tr[j]; // for(int k = 0; k < tr[i].size(); k++) { // tx = p1[k].first; // ty = p1[k].second; // for(int w = 0; w < tr[j].size(); w++) { // px = p2[w].first; // py = p2[w].second; // d1 = tx - px; // d2 = ty - py; // dis = abs(d1) + abs(d2); // if(dis == 2.0) { // x = (tx + px) / 2; // y = (ty + py) / 2; // if(tx == px || ty == py) { // ump[(x<<10) + y].insert(i); // ump[(x<<10) + y].insert(j); // } else { // ump[(tx<<10) + py].insert(i); // ump[(tx<<10) + py].insert(j); // ump[(px<<10) + ty].insert(i); // ump[(px<<10) + ty].insert(j); // } // } // } // } // } // } // for(auto [k, l] : ump) { // int sum = 1; // for(auto in : l) { // sum += (int)tr[in].size(); // } // mx = max(sum, mx); // } // return mx; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/8 21:50:04

微PE官网风格?不,这是ms-swift极简安装设计理念

ms-swift&#xff1a;用极简设计打开大模型全链路开发的新范式 在今天&#xff0c;训练一个70亿参数的大模型已经不再只是科技巨头的专属能力。越来越多的开发者、研究者甚至创业者开始尝试微调属于自己的“小而美”模型——但真正动手时才发现&#xff0c;从下载权重到部署服…

作者头像 李华
网站建设 2026/4/8 16:02:52

Chinese-Annotator:中文NLP智能标注的终极指南

Chinese-Annotator&#xff1a;中文NLP智能标注的终极指南 【免费下载链接】Chinese-Annotator Annotator for Chinese Text Corpus (UNDER DEVELOPMENT) 中文文本标注工具 项目地址: https://gitcode.com/gh_mirrors/ch/Chinese-Annotator 你是否曾为中文文本标注而烦恼…

作者头像 李华
网站建设 2026/4/15 11:10:58

Gutenberg版本升级完全指南:从0.6到0.7的平滑迁移策略

Gutenberg版本升级完全指南&#xff1a;从0.6到0.7的平滑迁移策略 【免费下载链接】Gutenberg Modern framework to print the web correctly.                                                项目地址: https://gitcode.c…

作者头像 李华
网站建设 2026/4/12 15:10:28

CPU也能做推理?ms-swift低资源模式开启普惠AI时代

CPU也能做推理&#xff1f;ms-swift低资源模式开启普惠AI时代 在一台没有独立显卡的普通笔记本上&#xff0c;运行一个70亿参数的大语言模型——这在过去几乎是天方夜谭。但如今&#xff0c;借助魔搭&#xff08;ModelScope&#xff09;社区推出的 ms-swift 框架&#xff0c;这…

作者头像 李华
网站建设 2026/4/13 22:57:14

深度测评专科生必用的10款AI论文软件

深度测评专科生必用的10款AI论文软件 2025年专科生论文写作工具测评&#xff1a;为何需要这份榜单&#xff1f; 随着人工智能技术的不断进步&#xff0c;AI论文软件逐渐成为高校学生&#xff0c;尤其是专科生群体的重要辅助工具。然而&#xff0c;面对市场上五花八门的平台和功…

作者头像 李华
网站建设 2026/4/11 2:10:09

论中国文化中“和而不同”的思想精髓

“和而不同”是中国文化中极具智慧与包容性的思想精髓&#xff0c;它深刻体现了中华民族处理差异、谋求和谐的哲学理念。这一思想源于古代&#xff0c;贯穿于政治、社会、文化交往的方方面面&#xff0c;至今仍具有强大的生命力。我们可以从以下几个维度来理解其精髓&#xff1…

作者头像 李华