LeetCode - 岛屿数量

news/2024/7/20 20:24:21 标签: 算法, leetcode, 深度优先

200. 岛屿数量

第一种写法:遍历岛屿,当遇到岛屿的时候,就开始进行深搜,遇到岛屿就将岛屿从1变为0。

class Solution {
public:

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

    void dfs(int i, int j, vector<vector<char>>& grid)
    {
        grid[i][j] = '0';

        for (int t = 0; t < 4; t++)
        {
            int x = i + dx[t];
            int y = j + dy[t];
            if (x >= 0 && x < grid.size() && y >= 0 && y < grid[0].size() && grid[x][y] == '1')
            {
                bfs(x, y, grid);
            }
        }
    }

    int numIslands(vector<vector<char>>& grid) {
        int ans = 0;

        for (int i = 0; i < grid.size(); i++)
        {
            for (int j = 0; j < grid[0].size(); j++)
            {
                if (grid[i][j] == '1')
                {
                    dfs(i, j, grid);
                    ans++;
                }
            }
        }
        return ans;

    }
};

第二种写法:扫描网格,进行宽搜,遇到1之后,就将1周围的岛屿加入队列,

class Solution {
public:

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

    void bfs(int i, int j, vector<vector<char>>& grid)
    {
        queue<pair<int,int>> q;
        q.push({i, j});
        while (!q.empty())
        {
            auto t = q.front();
            q.pop();
            int x = t.first;
            int y = t.second;
            if (grid[x][y] == '1')
            {
                grid[x][y] = '0';
                for (int tt = 0; tt < 4; tt++)
                {
                    int xx = x + dx[tt];
                    int yy= y + dy[tt];
                    if (xx >= 0 && xx < grid.size() && yy >= 0 && yy < grid[0].size())
                    {
                        q.push({xx, yy});
                    }
                }
            }
            else 
            {
                ;
            }
        }
    }

    int numIslands(vector<vector<char>>& grid) {
        int ans = 0;

        for (int i = 0; i < grid.size(); i++)
        {
            for (int j = 0; j < grid[0].size(); j++)
            {
                if (grid[i][j] == '1')
                {
                    bfs(i, j, grid);
                    ans++;
                }
            }
        }
        return ans;

    }
};


http://www.niftyadmin.cn/n/5462994.html

相关文章

肿瘤免疫反应瀑布图(源于The Miller Lab)

目录 数据格式 绘图 ①根据剂量 ②根据type ③根据治疗响应度 添加水平线 数据格式 肿瘤免疫响应数据 rm(list ls()) library(tidyverse) library(dplyr) library(knitr)#模拟数据 # We will randomly assign the two doses, 80 mg or 150 mg, to the 56 subjects Me…

腾讯云轻量2核2G3M云服务器优惠价格61元一年,限制200GB月流量

腾讯云轻量2核2G3M云服务器优惠价格61元一年&#xff0c;配置为轻量2核2G、3M带宽、200GB月流量、40GB SSD盘&#xff0c;腾讯云优惠活动 yunfuwuqiba.com/go/txy 活动链接打开如下图&#xff1a; 腾讯云轻量2核2G云服务器优惠价格 腾讯云&#xff1a;轻量应用服务器100%CPU性能…

06-JavaScript DOM对象

1. 从ECMA到W3C 我们知道&#xff0c;ECMA定义的是js的变量语法等基础的标准规范&#xff0c;而W3C是针对浏览器API提出的规范&#xff0c; 所以我们要工作不可能只了解语法&#xff0c;我们的代码要在浏览器上跑起来就需要我们去了解W3C的标准。 那么W3C规定了哪一系列的的A…

upload-labs训练平台

GitHub&#xff1a;GitHub - Tj1ngwe1/upload-labs: 一个帮你总结所有类型的上传漏洞的靶场 把下好的文件夹之间拖入到小皮的WWW目录下就可以之间访问网址使用了 目录 Pass-01(前端JS的绕过) (1)抓包绕过 (2)在前端绕过 Pass-02&#xff08;content-type绕过&#xff09;…

2024.3.31力扣(1200-1400)刷题记录

一、1523. 在区间范围内统计奇数数目 1.模拟 class Solution:def countOdds(self, low: int, high: int) -> int:# 模拟return len(range(low,high1,2)) if low & 1 else len(range(low1,high1,2)) 2.数学 总结规律。首为偶数就向下取整&#xff1b;奇数就向上取整。…

C#网站系统如何监控登录过期

原理 网站系统监控登录过期通常涉及多个层面的技术和策略。以下是一些建议的方法来实现这一功能&#xff1a; 会话管理 会话超时设置 为每个用户会话设置一个超时时间。一旦用户在这个时间段内没有与系统进行任何交互&#xff0c;会话将被视为过期&#xff0c;用户需要重新…

深入理解MySQL:拼接字符串、查询、删除表和创建索引的关键命令

MySQL是一种功能强大的关系型数据库管理系统&#xff0c;广泛应用于各种类型的应用程序中。本文将介绍MySQL中一些常用的关键命令&#xff0c;包括拼接字符串、查询、删除表和创建索引&#xff0c;帮助读者更好地理解和利用MySQL数据库。 mysql拼接字符串 在MySQL中&#xf…

碧桂园服务2023年营收426.1亿元,受行业影响较小,第三方收入占比达历史新高

点击输入图片描述&#xff08;最多30字&#xff09; 碧桂园服务2023年业绩会现场 物业行业属于轻资产行业&#xff0c;因此在房地产开发板块面临调整和压力的当下&#xff0c;物业服务公司受行业面波动较小&#xff0c;营收表现也相对更稳定。 3月27日&#xff0c;物企龙头碧…