827. 最大人工岛

给你一个大小为 n x n 二进制矩阵 grid 。最多 只能将一格 0 变成 1 。

返回执行此操作后,grid 中最大的岛屿面积是多少?

岛屿 由一组上、下、左、右四个方向相连的 1 形成。

示例 1:

输入: grid = [[1, 0], [0, 1]] 输出: 3 解释: 将一格0变成1,最终连通两个小岛得到面积为 3 的岛屿。

示例 2:

输入: grid = [[1, 1], [1, 0]] 输出: 4 解释: 将一格0变成1,岛屿的面积扩大为 4。

示例 3:

输入: grid = [[1, 1], [1, 1]] 输出: 4 解释: 没有0可以让我们变成1,面积依然为 4。

提示:

n == grid.length n == grid[i].length 1 <= n <= 500 grid[i][j] 为 0 或 1

分析

  • 通过bfs找到连通分量,然后用数字标记 并 统计每个连通分量中的个数
  • 遍历矩阵中的0,计算当前 0 的上,下,左,右四个方向的和,找最大值

code

class Solution {public:int dx[4] = {0,0,1,-1};int dy[4] = {1,-1,0,0};unordered_map<int,int> imap;int res = 0;// 连通分量统计,并找出最大的连通分量void bfs(vector<vector<int>>& g,vector<vector<int>>& vis,int cnt,int l,int r){int m = g.size();int n = g[0].size();queue<pair<int,int>> q;q.push(make_pair(l,r));while(!q.empty()){int a = q.front().first;int b = q.front().second;q.pop();for(int i=0;i<4;i++){int newx = a+dx[i];int newy = b+dy[i];//cout<<newx<<" "<<newy<<endl;if(newx<0||newx>=m||newy<0||newy>=n||vis[newx][newy]||g[newx][newy]==0)continue;q.push(make_pair(newx,newy));g[newx][newy] = cnt;imap[cnt]++;vis[newx][newy] = true;}}res = max(res,imap[cnt]);}int largestIsland(vector<vector<int>>& g) {int m = g.size();int n = g[0].size();int cnt = 2;vector<vector<int>> vis(m,vector<int>(n,0));for(int i=0;i<m;i++){for(int j=0;j<n;j++){if(g[i][j]==0||vis[i][j])continue;else{vis[i][j]=true;g[i][j] = cnt;imap[cnt]=1;bfs(g,vis,cnt,i,j);cnt++;}  }}// 防止同一个 0 添加相同的连通分量。unordered_set<int> v;// 枚举 0 位置for(int i=0;i<m;i++){for(int j=0;j<n;j++){if(!g[i][j]){int tmp=0;// 枚举上下左右for(int z=0;z<4;z++){int newx = i+dx[z];int newy = j+dy[z];// 越界if(newx<0||newx>=m||newy<0||newy>=n)continue;if(v.find(g[newx][newy])==v.end()){v.insert(g[newx][newy]);tmp += imap[g[newx][newy]];} }res = max(res,tmp+1);// 置空,下一个0使用v.clear();}}}return res;}
};

leetcode827. 最大人工岛 - 垃圾代码,毫无优化相关推荐

  1. 35 个 Java 代码性能优化总结

    http://mp.weixin.qq.com/s?__biz=MjM5MzMyNzg0MA==&mid=400312907&idx=3&sn=fee2e15f000b25e5 ...

  2. java代码统计收藏量_干货收藏 | 35个Java 代码性能优化总结(上)

    原标题:干货收藏 | 35个Java 代码性能优化总结(上) 前言 代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这 ...

  3. Java 代码性能优化

    代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是, ...

  4. java性能优化总结_35 个 Java 代码性能优化总结(一)

    前言 代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用, ...

  5. 44个Java代码性能优化总结

    转载自 44个Java代码性能优化总结 代码优化的最重要的作用应该是:避免未知的错误.在代码上线运行的过程中,往往会出现很多我们意想不到的错误,因为线上环境和开发环境是非常不同的,错误定位到最后往往是 ...

  6. Android 系统性能优化(42)---Android代码内存优化建议-Android资源篇

    Android代码内存优化建议-Android资源篇 这篇文章主要介绍在实际Android应用程序的开发中,容易导致内存泄露的一些情况.开发人员如果在进行代码编写之前就有内存泄露方面的基础知识,那么写 ...

  7. 【Java】44个Java代码性能优化总结

    1.概述 转载:44个Java代码性能优化总结 代码优化的最重要的作用应该是:避免未知的错误.在代码上线运行的过程中,往往会出现很多我们意想不到的错误,因为线上环境和开发环境是非常不同的,错误定位到最 ...

  8. 云享专家张强:程序员垃圾代码分类指南

    你见过对"代码"进行垃圾分类吗? 上一篇文章<程序员垃圾分类图鉴>和大家聊了聊程序员的垃圾分类,有的程序员直呼太真实,有的程序员觉得太讽刺,不应该给程序员进行这样的分类 ...

  9. 【无标题】android 代码混淆 垃圾代码制造

    原文链接:https://blog.csdn.net/liutietuo/article/details/108824904 一 开启混淆 minifyEnabled true 设置为true 并在项 ...

最新文章

  1. spring的jar各包作用
  2. pytorch和Numpy的区别以及相互转换
  3. 如何将文件地址转为url_Node.js 源码解析 util.promisify 如何将 Callback 转为 Promise
  4. ubuntu20.04安装OPTEE
  5. mpvue 从零开始 女友初成长 0
  6. 机器学习、神经网络中不懂的函数及功能实现
  7. 在家远程办公效率低?那你一定要收好这个「在家办公」神器!
  8. pojo vo bo dto javabean
  9. python获取日期的年月日_python datetime和time的一些疑惑解答 及 获取上年同期、上月等日期...
  10. 软件功能测试用例表,功能测试用例模板.xls
  11. window重命名图片不带括号
  12. linux 下 packet_mmap 前篇 (抓包实现)
  13. 国际结算三大方式之一—信用证 Letter of Credit(L/C)
  14. Java Seckill Module:seckill
  15. 【ntp时间校准配置】
  16. 日常pytho3练习脚本之--彩票自动选号机
  17. 第二章第四题(将磅转换为千克)(convert pound to kilogram)
  18. SAP ITS Mobile 系统实例(一)
  19. CentOS 7.6的64位安装JAVA JDK
  20. 【Mediator模式】C++设计模式——中介者模式

热门文章

  1. AmazonS3 、大文件、分段上传、分段下载,上传下载超时,java.net.SocketTimeoutException问题
  2. java 递归终止_java中执行程序如何终止递归?
  3. 阿里云大数据开发二面面经,已过,面试题已配答案
  4. C#:int.TryParse()与int.Parse()的使用
  5. 寻求长期合作工程师做兼职STM32 51 8S FPGA
  6. 前端高频vue面试题合集
  7. 00后计算机学霸,这些00后学霸逆天了!超一本线135分,12岁少女考上985!
  8. 备忘录模式 Memento 快照模式 标记Token模式 行为型 设计模式(二十二)
  9. 分布式事务学习-LCN
  10. radius服务器未响应,中国科学院地球环境研究所安全软件电子竞价成交公告