首页 > 编程语言 >代码随想录算法训练营 | 200.岛屿的数量

代码随想录算法训练营 | 200.岛屿的数量

时间:2024-11-14 12:07:21浏览次数:1  
标签:200 遍历 int 岛屿 训练营 随想录 dfs grid 节点

岛屿的数量

题目链接:https://leetcode.cn/problems/number-of-islands/

此题目要点:dfs和bfs都可以解决此题,但是使用dfs代码会更加的简洁

  • 首先对grid进行遍历,每一个节点都进行检查,判断是否是1(陆地)
  • 如果是,则进行dfs深搜,并将所有搜到的岛屿节点全置为0,表示此块岛屿已经被搜过了,防止后序找根节点的时候又将搜过的岛屿计入。
  • grid遍历的过程中如果再次遇到为1的节点,说明又有新的岛屿出现,数量+1
    image
class Solution {
public:
    int ans=0;
    int m,n;
    int dir[4][2]={0,1,1,0,0,-1,-1,0};
    int numIslands(vector<vector<char>>& grid) {
        //找到grid的行数和列数
       m=grid.size();
       n=grid[0].size(); 
       //对grid进行遍历
       for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                if(grid[i][j]=='1'){
                    dfs(grid,i,j);  //如果找到岛屿了,则进行dfs
                    ans++;
                }
            }
       }
       return ans;
    }
    void dfs(vector<vector<char>>& grid,int x,int y){
        grid[x][y]='0';
        for(int i=0;i<4;i++){
            int nx=x+dir[i][0];
            int ny=y+dir[i][1];
            if(nx>=0&&nx<m&&ny>=0&&ny<n&&grid[nx][ny]=='1') dfs(grid,nx,ny);
        }
    }
};

标签:200,遍历,int,岛屿,训练营,随想录,dfs,grid,节点
From: https://www.cnblogs.com/VickyWu/p/18545723

相关文章

  • 原生鸿蒙政务行业应用开发模板上线,近200个政务服务应用已上架
    一直以来,发展新质生产力对数字政府建设意义重大。华为原生鸿蒙之夜暨华为全场景新品发布会上,华为宣布从底座上全面突破操作系统的核心技术,实现了操作系统的自主可控。截至发布会,鸿蒙原生应用和元服务上架数已突破1.5万个,已有180余个政务服务一网通办平台、公积金类、医保服务类和......
  • 代码随想录算法训练营day45| 115.不同的子序列 583. 两个字符串的删除操作 72.
    学习资料:https://programmercarl.com/0115.不同的子序列.html#算法公开课动态规划系列之编辑距离问题学习记录:115.不同的子序列(当遇到相同字母时,可以选择也可以不选;刚开始没看懂;dp[i][j]是对应i-1结尾和j-1结尾,这样的目的是方便第一行和第一列初始化)点击查看代码classSolut......
  • 代码随想录:二分查找
    代码随想录:二分查找二分法标志:数组顺序排列且无重复简单的二分法,写法是左闭右闭的写法,此种情况的left可以等于right,故while里有等号。classSolution{public:intsearch(vector<int>&nums,inttarget){intleft=0;intright=nums.size()-1;......
  • 代码随想录:移除元素
    代码随想录:移除元素题目中的原地指的是不能开创新的数组。简单双指针解决问题,实际上是vector中的erase的实现原理//erase和迭代器的使用方法std::vector<int>vec={1,2,3,4,5};autoit=vec.begin()+2;//指向元素3//这所谓迭代器其实就是封装后的指针啊vec.era......
  • PROG2004 A simple appointment system
     AssessmentBriefPROG2004OBJECTORIENTEDPROGRAMMINGSummaryTitleAssessment1–Programmingtasks-asimpleappointmentsystemforahealthservice TypeProgrammingDueDateMonday11November202411:59pmAEST(StartofWeek3)LengthNAWeighting20%......
  • 鸿蒙高质量代码静态检测200条四
    @cross-device-app-dev/font-size字体大小要求至少为8fp以便于阅读@cross-device-app-dev/grid-columns-span不推荐开发者将栅格中所有的GridCol子组件只设置span属性,且值与父组件的columns属性相等@cross-device-app-dev/grid-span-value在栅格布局组件GridCol中......
  • 代码随想录算法训练营第二十五天| leetcode491.递增子序列、leetcode46.全排列、leetc
    1leetcode491.递增子序列题目链接:491.非递减子序列-力扣(LeetCode)文章链接:代码随想录视频链接:回溯算法精讲,树层去重与树枝去重|LeetCode:491.递增子序列_哔哩哔哩_bilibili思路:用之前的方法,结果翻车了,好好看视频学新技能吧1.1视频后的思路真的没想到用set来去重,还是基......
  • 代码随想录算法训练营 | 所有可达路径
    所有可达路径文章链接:https://programmercarl.com/kamacoder/0098.所有可达路径.html#本题代码题目链接:https://kamacoder.com/problempage.php?pid=1170#include<iostream>#include<vector>usingnamespacestd;//全局路径vector<vector<int>>paths;vector<in......
  • 鸿蒙高质量代码静态检测200条三
    @performance/hp-arkts-no-use-any-export-current避免使用export*导出当前module中定义的类型和数据@performance/hp-arkts-no-use-any-export-other避免使用export*导出其他module中定义的类型和数据@performance/hp-arkui-avoid-empty-callback避免设置空的系统......
  • 鸿蒙高质量代码静态检测200条三
    @performance/hp-arkts-no-use-any-export-current避免使用export*导出当前module中定义的类型和数据@performance/hp-arkts-no-use-any-export-other避免使用export*导出其他module中定义的类型和数据@performance/hp-arkui-avoid-empty-callback避免设置空......