当前位置: 首页 > news >正文

代码随想录三刷day51

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、力扣200. 岛屿数量
  • 二、力扣695. 岛屿的最大面积
  • 三、力扣1020. 飞地的数量
  • 四、力扣130. 被围绕的区域


前言


依然是从地图周边出发,将周边空格相邻的'O'都做上标记,然后在遍历一遍地图,遇到 'O' 且没做过标记的,那么都是地图中间的'O',全部改成'X'就行。

一、力扣200. 岛屿数量

class Solution {int[][] arr = new int[][]{{0,1},{0,-1},{-1,0},{1,0}};boolean[][] flag;public int numIslands(char[][] grid) {int m = grid.length, n = grid[0].length;int res = 0;flag = new boolean[m][n];for(int i = 0; i < m; i ++){for(int j = 0; j < n; j ++){if(!flag[i][j] && grid[i][j] == '1'){res ++;bfs(grid, i, j);}}}return res;}public void bfs(char[][] grid, int x, int y){Deque<int[]> deq = new LinkedList<>();deq.offerLast(new int[]{x,y});while(!deq.isEmpty()){int size = deq.size();for(int i = 0; i < size; i ++){int[] cur = deq.pollFirst();for(int j = 0; j < 4; j ++){int curX = cur[0] + arr[j][0];int curY = cur[1] + arr[j][1];if(curX < 0 || curX >= grid.length || curY < 0 || curY >= grid[0].length){continue;}if(!flag[curX][curY] && grid[curX][curY] == '1'){flag[curX][curY] = true;deq.offerLast(new int[]{curX,curY});}}}}}
}

二、力扣695. 岛屿的最大面积

class Solution {int res = 0;int count = 0;int[][] arr = new int[][]{{0,1},{0,-1},{-1,0},{1,0}};boolean[][] flag;public int maxAreaOfIsland(int[][] grid) {int m = grid.length, n = grid[0].length;flag = new boolean[m][n];for(int i = 0; i < m; i ++){for(int j = 0; j < n; j ++){if(!flag[i][j] && grid[i][j] == 1){flag[i][j] = true;count = 1;dfs(grid,i,j);}}}return res;}public void dfs(int[][] grid, int x, int y){res = Math.max(count,res);for(int i = 0; i < 4; i ++){int curX = x + arr[i][0];int curY = y + arr[i][1];if(curX < 0 || curX >= grid.length || curY < 0 || curY >= grid[0].length){continue;}if(!flag[curX][curY] && grid[curX][curY] == 1){flag[curX][curY] = true;count ++;dfs(grid,curX,curY);}}}
}

三、力扣1020. 飞地的数量

class Solution {int res = 0;int count = 0;int[][] arr = new int[][]{{0,1},{0,-1},{-1,0},{1,0}};boolean[][] flag;boolean f;public int numEnclaves(int[][] grid) {int m = grid.length, n = grid[0].length;flag = new boolean[m][n];for(int i = 0; i < m; i ++){for(int j = 0; j < n; j ++){if(!flag[i][j] && grid[i][j] == 1){flag[i][j] = true;count = 1;f = false;dfs(grid,i,j);if(!f){res += count;}}}}return res;}public void dfs(int[][] grid, int x, int y){for(int i = 0; i < 4; i ++){int curX = x + arr[i][0];int curY = y + arr[i][1];if(curX < 0 || curX >= grid.length || curY < 0 || curY >= grid[0].length){f = true;continue;}if(!flag[curX][curY] && grid[curX][curY] == 1){count ++;flag[curX][curY] = true;dfs(grid,curX,curY);}}}
}

四、力扣130. 被围绕的区域

class Solution {int[][] arr = new int[][]{{0,1},{0,-1},{-1,0},{1,0}};boolean[][] flag;public void solve(char[][] board) {int m = board.length, n = board[0].length;flag = new boolean[m][n];for(int i = 0; i < m; i ++){if(!flag[i][0] && board[i][0] == 'O'){flag[i][0] = true;dfs(board, i, 0);}if(!flag[i][n-1] && board[i][n-1] == 'O'){flag[i][n-1] = true;dfs(board,i,n-1);}}for(int i = 0; i < n; i ++){if(!flag[0][i] && board[0][i] == 'O'){flag[0][i] = true;dfs(board,0,i);}if(!flag[m-1][i] && board[m-1][i] == 'O'){flag[m-1][i] = true;dfs(board,m-1,i);}}for(int i = 0; i < m; i ++){for(int j = 0; j < n; j ++){if(!flag[i][j] && board[i][j] == 'O'){board[i][j] = 'X';}}}}public void dfs(char[][] board, int x, int y){for(int i = 0; i < 4; i++){int curX = x + arr[i][0];int curY = y + arr[i][1];if(curX < 0 || curX >= board.length || curY < 0 || curY >= board[0].length){continue;}if(!flag[curX][curY] && board[curX][curY] == 'O'){flag[curX][curY] = true;dfs(board,curX,curY);}}}
}

相关文章:

代码随想录三刷day51

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、力扣200. 岛屿数量二、力扣695. 岛屿的最大面积三、力扣1020. 飞地的数量四、力扣130. 被围绕的区域 前言 依然是从地图周边出发&#xff0c;将周边空格相邻…...

基于python+Django的二维码生成算法设计与实现

博主介绍&#xff1a; 大家好&#xff0c;本人精通Java、Python、C#、C、C编程语言&#xff0c;同时也熟练掌握微信小程序、Php和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验&#xff0c;能够为学生提供各类…...

pytorch 2.0 多线程并行,导致GPU利用100%,卡住

背景&#xff1a; 程序中有pytorch模型两个&#xff0c;yolov5&#xff0c;crnn。 之前无论是pth格式&#xff0c;还是TRT格式&#xff0c;并行的都没有问题。 最近发现&#xff0c;多线程ThreadPoolExecutor(max_workers2)调用的时候&#xff0c;即单个进程内处理一张图像&a…...

后端开发面经系列 -- 阿里C++二面面经

阿里C二面面经 公众号&#xff1a;阿Q技术站 来源&#xff1a;https://www.nowcoder.com/feed/main/detail/fc4a48403b534aafa6a6bce14b542c4e?sourceSSRsearch 1、智能指针&#xff1f; std::shared_ptr&#xff1a; 原理&#xff1a;std::shared_ptr是基于引用计数的智能指…...

【Image captioning】In Defense of Grid Features for Visual Question Answering实现流程

In Defense of Grid Features for Visual Question Answering实现流程 网格特征预训练代码 这是该论文的特征预训练代码发布: @InProceedings{jiang2020defense,title={In Defense of Grid Features for Visual Question Answering},author={Jiang, Huaizu and Misra, Ishan…...

MySQL用SQL取三列中最大的数据值

1、有如下数据&#xff1a; ABC000097.0600330.72330.720069.650027.8827.85086.92086.92219.42219.4219.41 需要展示为如下形式&#xff1a; ABC结果列0000097.06097.060330.72330.72330.7200669.65009.6527.8827.85027.8886.92086.9286.92219.42219.4219.41219.42 解决办…...

【Mac】如何解决打开PD虚拟机后Mac无法上网的问题?

问题描述 部分用户在运行Parallels Desktop并打开Windows 11后&#xff0c;发现Windows上网没有问题&#xff0c;但是Mac主机不能访问带域名的网站&#xff0c;而访问带IP的网站没问题&#xff0c;退出Parallels虚拟机以后&#xff0c;Mac网络又恢复正常。 解决办法 退出 Pa…...

【NodeMCU实时天气时钟温湿度项目 7】和风天气API返回JSON数据信息的解压缩实现——ArduinoUZlib功能库

今天是第七专题&#xff0c;主要内容是&#xff1a;导入ArduinoUZlib功能库&#xff0c;借助该库把从【和风天气】官网返回的经过Gzip压缩的JSON数据&#xff0c;进行解压缩和t解析&#xff0c;在串口监视器上输出解析后的JSON信息。 如您需要了解其它专题的内容&#xff0c;请…...

leetcode题目9

回文数 简单 给你一个整数 x &#xff0c;如果 x 是一个回文整数&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 回文数:是指正序&#xff08;从左向右&#xff09;和倒序&#xff08;从右向左&#xff09;读都是一样的整数。 思路 对于数字进行反转&a…...

CNAME记录

CNAME记录 维基百科&#xff0c;自由的百科全书 &#xff08;重定向自CNAME&#xff09; 真实名称记录&#xff08;英语&#xff1a;Canonical Name Record&#xff09;&#xff0c;即CNAME记录&#xff0c;是域名系统&#xff08;DNS&#xff09;的一种记录。CNAME记录用于…...

pytest + yaml 框架 -69.新增depend 关键字,导入其它yaml用例

前言 有小伙伴提到&#xff0c;test_a.yml 中已经写了几个流程&#xff0c;test_b.yml 中希望能接着test_a.yml去写用例&#xff0c;于是就需要先导入test_a.yml用例。 为了满足此需求&#xff0c;v1.6.3版本 在config 中新增 depend 关键字。 需求场景 test_a.yml 中已经写…...

【网络】tcp的初始化序列号为什么要随机生成

TCP序列号和确认序列号 在TCP协议中&#xff0c;每个数据包都包含一个序列号和一个确认序列号&#xff0c;用于实现可靠的数据传输和流量控制。 序列号&#xff08;Sequence Number&#xff09;&#xff1a;序列号是发送端为每个发送的数据包分配的唯一标识&#xff0c;用于标…...

【SRC实战】利用APP前端加密构造数据包

挖个洞先 https://mp.weixin.qq.com/s/ZnaRn222xJU0MQxWoRaiJg “ 以下漏洞均为实验靶场&#xff0c;如有雷同&#xff0c;纯属巧合” 01 — 漏洞证明 “ 参数加密的情况&#xff0c;不会逆向怎么办&#xff1f;” 1、新用户首次设置密码时抓包&#xff0c;此处设置为0000…...

ThreadLocal描述

ThreadLocal是Java中的一个类&#xff0c;用于在多线程环境下存储和获取线程相关的数据。每个ThreadLocal对象都可以维护一个线程本地的变量副本&#xff0c;这意味着每个线程都可以独立地改变自己的副本&#xff0c;而不会影响其他线程的副本。这种特性使得ThreadLocal非常适合…...

Linux-基础命令第三天

1、命令&#xff1a;wc 作用&#xff1a;统计行数、单词数、字符数 格式&#xff1a;wc 选项 文件名 例&#xff1a; 统计文件中的行数、单词数、字符数 说明&#xff1a;59代表行数&#xff0c;111代表单词数&#xff0c;2713代表字符数&#xff0c;a.txt代表文件名 选项…...

Windows Server 2022 环境下WEB和DNS服务器配置方法

目录 实验名称&#xff1a;WEB和DNS服务器配置实验目的实验原理&#xff1a;主要设备、器材&#xff1a;实验内容&#xff1a;配置本地WEB站点配置本地DNS服务器 实验名称&#xff1a;WEB和DNS服务器配置 实验目的 掌握 Windows Server 2022 环境下WEB服务器配置方法 掌握 Wi…...

静态住宅代理 IP 的影响

在不断发展的在线业务和数字营销领域&#xff0c;保持领先地位势在必行。在业界掀起波澜的最新创新之一是静态住宅代理 IP 的利用。这些知识产权曾经是为精通技术的个人保留的利基工具&#xff0c;现在正在成为各行业企业的游戏规则改变者。 一、静态住宅代理IP到底是什么&…...

IP代理中的SOCKS5代理是什么?安全吗?

在互联网世界中&#xff0c;网络安全和个人隐私保护变得日益重要。SOCKS5代理作为一种安全高效的网络工具&#xff0c;不仅可以保护个人隐私安全&#xff0c;还可以提供更稳定、更快度的网络连接。本文将带大家深入了解SOCKS5代理在网络安全领域中的应用。 什么是SOCKS5代理 …...

一个用Kotlin编写简易的串行任务调度器

引言 由于项目中有处理大量后台任务并且串行执行的需求&#xff0c;特意写了一个简易的任务调度器&#xff0c;方便监控每个任务执行和异常情况&#xff0c;任务之间互不影响。正如上所述&#xff0c;Kotlin中的TaskScheduler类提供了一个强大的解决方案&#xff0c;用于使用S…...

JavaScript异步编程——11-异常处理方案【万字长文,感谢支持】

异常处理方案 在JS开发中&#xff0c;处理异常包括两步&#xff1a;先抛出异常&#xff0c;然后捕获异常。 为什么要做异常处理 异常处理非常重要&#xff0c;至少有以下几个原因&#xff1a; 防止程序报错甚至停止运行&#xff1a;当代码执行过程中发生错误或异常时&#x…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)

前言&#xff1a; 双亲委派机制对于面试这块来说非常重要&#xff0c;在实际开发中也是经常遇见需要打破双亲委派的需求&#xff0c;今天我们一起来探索一下什么是双亲委派机制&#xff0c;在此之前我们先介绍一下类的加载器。 目录 ​编辑 前言&#xff1a; 类加载器 1. …...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...

【堆垛策略】设计方法

堆垛策略的设计是积木堆叠系统的核心&#xff0c;直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法&#xff0c;涵盖基础规则、优化算法和容错机制&#xff1a; 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则&#xff1a; 大尺寸/重量积木在下&#xf…...

快速排序算法改进:随机快排-荷兰国旗划分详解

随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...