news 2026/7/28 15:19:13

Java学习手册:(数据结构与算法-数组)Number of Islands(leetcode200)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java学习手册:(数据结构与算法-数组)Number of Islands(leetcode200)

题目:

给的一个二维数组,只含有0和1两个字符。其中1代表陆地,0代表水域。横向和纵向的陆地连接成岛屿,被水域分隔开。问给出的地图中有多少岛屿?

示例一:

输入:

11110

11010

11000

00000

输出:

1

示例二:

输入:

11000

11000

00100

00011

输出:

2

思路:

flood fill方法

代码如下:

package com.haobi; public class NumberofIslands { private static int m, n; // 搜索顺序 private static int d[][] = {{-1,0},{0,1},{1,0},{0,-1}}; private static boolean visited[][]; private static boolean inArea(int x, int y) { return x>=0 && x<m && y>=0 && y<n; } public static void main(String[] args) { //示例1 char[][] c1 = {{'1','1','1','1','0'}, {'1','1','0','1','0'}, {'1','1','0','0','0'}, {'0','0','0','0','0'}}; //示例2 char[][] c2 = {{'1','1','0','0','0'}, {'1','1','0','0','0'}, {'0','0','1','0','0'}, {'0','0','0','1','1'}}; System.out.println(numIslands(c2)); } public static int numIslands(char[][] grid) { m = grid.length; n= grid[0].length; //初始化 visited = new boolean[m][n]; int res = 0; for(int i=0;i<m;i++) { for(int j=0;j<n;j++) { if(grid[i][j] == '1' && !visited[i][j]) { res++; dfs(grid, i, j); } } } return res; } /** * 递归算法 * 从grid[x][y]的位置开始,进行floodfill * 保证(x,y)是合法的,且grid[x][y]是没有被访问过的陆地 * @param grid * @param x * @param y */ private static void dfs(char[][]grid, int x, int y) { visited[x][y] = true; //搜索四个方向 for(int i=0;i<4;i++) { int newx = x + d[i][0]; int newy = y + d[i][1]; if(inArea(newx, newy) && !visited[newx][newy] && grid[newx][newy] == '1') { dfs(grid, newx, newy); } } return; } }

程序输出结果如下:

3

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/28 15:17:44

学生党降重工具怎么挑?按预算和效果排一排

学生党降重工具怎么挑&#xff1f;按预算和效果排一排 你是学生党&#xff0c;兜里就那点生活费&#xff0c;论文却卡在重复率和 AI 率两条线上过不去。你现在最纠结的其实不是"哪个工具最贵最好"&#xff0c;而是"我这点预算&#xff0c;怎么挑一个既便宜又真…

作者头像 李华
网站建设 2026/7/28 15:17:27

羽毛球馆场地管理系统的设计与实现

之前由于疏忽忘记了把数据库文件传到github&#xff0c;现在已经更新上传了数据库文件。 git源码地址&#xff1a;https://github.com/cn-ysu-workstation/Badminton/tree/master 如果git上下载不了可以点开我的csdn个人资料&#xff0c;看我上传的资源&#xff0c;里面有相同…

作者头像 李华
网站建设 2026/7/28 15:16:38

C 排序算法:快速排序

C 排序算法&#xff1a;快速排序 一、实现 #include<stdio.h>void quickSort(int *p, int left, int right); void disArr(int *p,int size); int main() {int arr[] {1,9,8,7,0,2};quickSort(arr,0, sizeof(arr) / sizeof(*arr)-1);disArr(arr, sizeof(arr) / sizeof(*…

作者头像 李华
网站建设 2026/7/28 15:15:58

无主题内容创作方法论:逆向思维与关键词发散技术

1. 项目概述作为一名从业多年的内容创作者&#xff0c;我经常遇到一个看似简单却困扰很多人的问题——如何在没有明确主题的情况下&#xff0c;依然能够创作出有价值的内容。这种情况在自媒体运营、企业内容生产和个人知识管理中尤为常见。"无标题"项目正是针对这一痛…

作者头像 李华
网站建设 2026/7/28 15:14:41

集成学习(ensemble learning)

目录 什么是集成学习&#xff1f; 1.学习器相关的基本定义&#xff1a; 2 .集成学习的方法 3 .并行计算 &#xff1a; 4 .串行计算 &#xff1a; boosting实例&#xff1a; 给定如下表所示训练数据。假设个体学习器由x&#xff08;输入&#xff09;和y&#xff08;输出&a…

作者头像 李华
网站建设 2026/7/28 15:13:48

企业400电话办理全流程指南与优化建议

1. 企业400电话业务概述 400电话作为企业专属客服热线&#xff0c;已经取代传统固话成为现代企业客户服务的标配。与普通电话号码不同&#xff0c;400号码采用全国统一接入、话费分摊的通信模式&#xff0c;客户拨打无需支付长途费用&#xff0c;企业则按接听量付费。这种模式特…

作者头像 李华