首页 > 其他分享 >leetCode-深度优先遍历

leetCode-深度优先遍历

时间:2024-10-27 17:03:11浏览次数:5  
标签:优先 遍历 return int dfs ++ length grid leetCode

岛屿数量

深度优先遍历

class Solution {
    public int numIslands(char[][] grid) {
        int xlen = grid[0].length;
        int ylen = grid.length;
        int count = 0;

        for (int x = 0; x < xlen; x++) {
            for (int y = 0; y < ylen; y++) {
                if (grid[y][x] == '1') {
                    dfs(grid, y, x);
                    count++;
                }
            }
        }

        return count;
    }

    private void dfs(char[][] grid, int y, int x) {
        if (y < 0 || y >= grid.length)
            return;
        if (x < 0 || x >= grid[0].length)
            return;
        if (grid[y][x] == '0')
            return;

        grid[y][x] = '0';

        int[] dx = { 0, 0, 1, -1 };
        int[] dy = { 1, -1, 0, 0 };

        for (int i = 0; i < 4; i++) {
            dfs(grid, y + dy[i], x + dx[i]);
        }
    }

}

 

标签:优先,遍历,return,int,dfs,++,length,grid,leetCode
From: https://www.cnblogs.com/zrzct/p/18508600

相关文章

  • 数据结构与算法——Java实现 46. 从前序与中序遍历序列构造二叉树
    努力的意义大概就是当好运来临的时候你觉得你值得                                                ——24.10.24105.从前序与中序遍历序列构造二叉树给定两个整数数组 preorder 和 inorder ,其中 preorder 是......
  • leetCode-双指针
     移动零classSolution{publicvoidmoveZeroes(int[]nums){intn=nums.length;intslow=0;intfast=0;while(fast<n){if(nums[fast]!=0){nums[slow++]=nums[fast++];......
  • 深度优先算法(DFS)洛谷P1683-入门
    虽然洛谷是有题解的,但是你如果直接看得懂题解,你也不会来看这篇文章..这些代码均是我记录自身成长的记录,有写的不好的地方请谅解!先上代码:#include<iostream>#include<vector>#include<iomanip>#include<cstdio>usingnamespacestd;constintN=30;charg[N......
  • leetcode每日一题:3181.执行操作可获得的最大总奖励 II
     题干:读本文前,请先弄懂上一篇中的内容,因为这是对上一篇内容的优化:3180.执行操作可获得的最大总奖励I明白上篇的,访问值的影响、复制、上下行之间的关系和算法后可继续看:上一篇中,我们用二维数组,第二维表示了状态空间。但是,在今日的题目中,提交不行,因为占用的空间太太太......
  • 100种算法【Python版】第10篇——深度优先搜索
    本文目录1深度优先搜索2示例说明:迷宫路径查找2.1问题描述2.2DFS解决逻辑2.3python代码3算法应用3.1数独问题3.1.1DFS求解逻辑3.1.2python代码3.2单词搜索3.2.1python代码3.2.2代码逻辑4总结4.1优点4.2缺点1深度......
  • LeetCode 3181. 执行操作可获得的最大总奖励 II
    1classSolution{2public:3intmaxTotalReward(vector<int>&rewardValues){4intm=ranges::max(rewardValues);5unordered_set<int>s;6for(intv:rewardValues){7if(s.contains(v))......
  • leetcode-1934-确认率
    链接:1934.确认率-力扣(LeetCode)前提条件:Signups+----------------+----------+|ColumnName|Type|+----------------+----------+|user_id|int||time_stamp|datetime|+----------------+----------+User_id是该表的主键。每一行......
  • 代码随想录算法训练营第七天|LeetCode 344.反转字符串、LeetCode 541.反转字符串Ⅱ、
    LeetCode 344.反转字符串题目链接:LeetCode344.反转字符串文章链接:代码随想录题目:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用O(1)的额外空间解决这一问题。示......
  • LeetCode|3180. 执行操作可获得的最大总奖励 I(day23)
    作者:MJ昊博客:掘金、CSDN等公众号:程序猿的编程之路今天是昊的算法之路第23天,今天分享的是LeetCode第3180题执行操作可获得的最大总奖励I的解题思路。这是一道中等难度的题目,要求我们在给定的奖励值数组中,通过某些操作尽可能获取最大总奖励。题目描述简要回顾题目要......
  • LeetCode|384. 打乱数组(day22)
    作者:MJ昊博客:掘金、CSDN等公众号:程序猿的编程之路今天是昊的算法之路第22天,今天分享的是LeetCode第384题打乱数组的解题思路。这是一道中等难度的题目,要求我们实现一个算法,使得数组支持随机打乱和重置为初始顺序的功能,并且每种排列出现的概率应当相等。题目描述简要......