当前位置: 首页 > 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…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...