Leetcode热题100-200 岛屿数量

news/2024/12/22 2:36:56/

Leetcode热题100-200 岛屿数量

1. 题目描述

200 岛屿数量

2. 代码实现

1. dfs算法

class Solution {
public:int numIslands(vector<vector<char>>& grid) {int m = grid.size(), n = grid[0].size();int res = 0;// 注意lambda函数本身是不支持递归的,需要捕获自身来实现递归调用// 使用 lambda 表达式实现 DFSauto dfs = [&](auto&& dfs, int x, int y) -> void {// 超出边界检查if (x < 0 || x >= m || y < 0 || y >= n)return;// 不为陆地或者已访问过if (grid[x][y] != '1')return;// 设置为已访问grid[x][y] = '0';// 向四个方向递归dfs(dfs, x - 1, y); // 上dfs(dfs, x + 1, y); // 下dfs(dfs, x, y - 1); // 左dfs(dfs, x, y + 1); // 右};for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (grid[i][j] == '1') {dfs(dfs, i, j);res += 1;}}}return res;}
};

2. bfs算法

class Solution {
public:// 定义方向向量:上下左右vector<pair<int, int>> dirs = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};int numIslands(vector<vector<char>>& grid) {int m = grid.size(), n = grid[0].size();int res = 0;// 使用bfs遍历的方式来实现for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (grid[i][j] == '1') {queue<pair<int, int>> que;que.push({i, j});// 标记为已访问grid[i][j] = '0';while (!que.empty()) {auto [x, y] = que.front();que.pop();// 遍历四个方向for (const auto& [dx, dy] : dirs) {int new_x = x + dx;int new_y = y + dy;// 判断是否越界以及是否为陆地if (new_x >= 0 && new_x < m && new_y >= 0 &&new_y < n && grid[new_x][new_y] == '1') {que.push({new_x, new_y});grid[new_x][new_y] = '0';}}}res++;}}}return res;}
};

http://www.ppmy.cn/news/1536254.html

相关文章

问:要求使用JAVA分配1GB内存,如何搞?

在Java中&#xff0c;分配一段连续的内存空间并不像在C/C中那样直接&#xff0c;因为Java的内存管理是由JVM负责的。Java没有显式的语法去分配一块特定地址的连续内存&#xff0c;但可以通过创建一个大数组来达到类似的效果。 步骤 1&#xff1a;计算所需的数组大小 在Java中…

Linux内核参数管理

Linux 内核有很多可以定制化的参数 —— 内核参数 ( kernel parameters )&#xff0c; 斟酌设置内核参数对 系统调优 意义重大。 内核参数 涵盖内核的方方面面&#xff0c;包括 网络 ( net )、 文件系统 ( fs )等等。 本文以 fs.file-max 参数为例&#xff0c;介绍设置内…

开发自定义starter

环境&#xff1a;Spring Cloud Gateway 需求&#xff1a;防止用户绕过网关直接访问服务器&#xff0c;用户只需引入依赖即可。 1、创建项目 首先创建一个spring boot项目 2、配置pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xm…

零样本提示ChatGPT

导包 from openai import OpenAI import json client OpenAI(base_url"https://api.chatanywhere.tech/v1" )2.设置提示&#xff0c;提示最好放在3个引号内或3个#号内 prompt f""" 生成一个由三个虚构的订单信息所组成的列表&#xff0c;以JSON格…

【系统架构设计师】目录提纲

一、绪论&#xff08;TODO&#xff09; 二、计算机与网络基础知识&#xff08;TODO&#xff09; 三、信息系统基础知识&#xff08;TODO&#xff09; 四、系统开发基础知识&#xff08;TODO&#xff09; 五、软件架构设计&#xff08;TODO&#xff09; 六、UML建模与架构文…

【Linux】wsl虚拟机时间和实际时间不符合

本文首发于 ❄️慕雪的寒舍 偶然遇到了这个问题&#xff0c;触发原因是电脑在开启wsl的情况下进入了 休眠 模式&#xff0c;且在无网络情况下几天不使用。 然后开启wsl&#xff0c;发现git log显示最新commit的提交时间是明天&#xff0c;给我吓一跳&#xff0c;然后才发现原来…

windows配置C++编译环境和VScode C++配置(保姆级教程)

1.安装MinGW-w64 MinGW-w64是一个开源的编译器套件&#xff0c;适用于Windows平台&#xff0c;支持32位和64位应用程序的开发。它包含了GCC编译器、GDB调试器以及其他必要的工具&#xff0c;是C开发者在Windows环境下进行开发的重要工具。 我找到了一个下载比较快的链接&#…

铲屎官有什么推荐的养宠好物吗?如何挑选宠物空气净化器?

国庆小长假就这样悄无声息地结束了&#xff0c;从充满温暖的家里&#xff0c;回到空荡的出租屋&#xff0c;心里的落差还是很大的。假期里朋友圈都在疯狂更新&#xff0c;除了到处旅游的照片&#xff0c;就是不少猫片&#xff0c;刷多了我又萌生了养宠的想法。行动派的我在假期…