827. 最大人工岛

cpp 复制代码
class Solution {
public:
    void dfs(vector<vector<int>> &grid,int x,int y,int hang,int lie,int mark,int &size){
        if(grid[x][y]==1){
            grid[x][y]=mark;
            size++;
            if(x-1>=0){
                dfs(grid,x-1,y,hang,lie,mark,size);
            }
            if(x+1<hang){
                dfs(grid,x+1,y,hang,lie,mark,size);
            }
            if(y-1>=0){
                dfs(grid,x,y-1,hang,lie,mark,size);
            }
            if(y+1<lie){
                dfs(grid,x,y+1,hang,lie,mark,size);
            }
        }
    }
    int largestIsland(vector<vector<int>>& grid) {
        int hang=grid.size();
        int lie=grid[0].size();
        int mark=2;
        int res=0;
        unordered_map<int,int> mp;
        for(int i=0;i<hang;i++){
            for(int j=0;j<lie;j++){
                if(grid[i][j]==1){
                    int size=0;
                    dfs(grid,i,j,hang,lie,mark,size);
                    mp[mark]=size;
                    res=max(res,size);
                    mark++;
                }
            }
        }
        for(int i=0;i<hang;i++){
            for(int j=0;j<lie;j++){
                if(grid[i][j]==0){
                    unordered_set<int> land;
                    int sum=1;
                    if(i-1>=0&&grid[i-1][j]!=0){
                        land.insert(grid[i-1][j]);
                    }
                    if(i+1<hang&&grid[i+1][j]!=0){
                        land.insert(grid[i+1][j]);
                    }
                    if(j-1>=0&&grid[i][j-1]!=0){
                        land.insert(grid[i][j-1]);
                    }
                    if(j+1<lie&&grid[i][j+1]!=0){
                        land.insert(grid[i][j+1]);
                    }
                    for(auto a:land){
                        sum+=mp[a];
                    }
                    res=max(res,sum);
                }
            }
        }
        return res;
    }
};

先标记各个岛,然后将岛屿与其面积存入map中,然后遍历0,查找在一位变0下的面积最大值

相关推荐
怕浪猫2 小时前
Electron 系列文章封面图
算法·架构·前端框架
徐小夕4 小时前
JitWord 3.0 正式发布,高精度Word异构解析+复杂组件兼容,打造web端协同Word编辑器
前端·vue.js·算法
通信小呆呆19 小时前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
benben04420 小时前
强化学习之DQN算法族(基于gymnasium开发)
算法
何以解忧,唯有..21 小时前
Go语言循环语句详解:for、range与循环控制
开发语言·算法·golang
想吃火锅100521 小时前
【leetcode】88.合并两个有序数组js
算法
生成论实验室1 天前
机器人:一个自主运动的系统
人工智能·算法·语言模型·机器人·自动驾驶·agi·安全架构
Qres8211 天前
算法复键——树状数组
数据结构·算法
H178535090961 天前
SolidWorks第四部分_直接实体建模特征9_替换面原理
线性代数·算法·机器学习·3d建模·solidworks