代码随想录——图论一刷day03

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

文章目录

  • 前言
  • 一、力扣130. 被围绕的区域
  • 二、力扣417. 太平洋大西洋水流问题
  • 三、力扣827. 最大人工岛


前言

`


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

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

二、力扣417. 太平洋大西洋水流问题

class Solution {int[][] move = {{0,1},{0,-1},{-1,0},{1,0}};boolean[][][] flag;// boolean[][] visited;public List<List<Integer>> pacificAtlantic(int[][] heights) {List<List<Integer>> res = new ArrayList<>();int row = heights.length, col = heights[0].length;flag = new boolean[row][col][2];// visited = new boolean[row][col];for(int i = 0; i < row; i ++){if(flag[i][0][0] == false){dfs(heights, i, 0, 0);}if(flag[i][col-1][1] == false){dfs(heights, i, col-1, 1);}}for(int i = 0; i < col; i ++){if(flag[0][i][0] == false){dfs(heights, 0, i, 0);}if(flag[row-1][i][1] == false){dfs(heights, row-1, i, 1);}}for(int i = 0; i < row; i ++){for(int j = 0; j < col; j ++){if(flag[i][j][0] == true && flag[i][j][1] == true){res.add(Arrays.asList(i,j));}}}return res;}public void dfs(int[][] heights, int x, int y, int t){if(t == 0){flag[x][y][0] = true;}else{flag[x][y][1] = true;}for(int i = 0; i < 4; i ++){int nextX = x + move[i][0];int nextY = y + move[i][1];if(nextX < 0 || nextX >= heights.length || nextY < 0 || nextY >= heights[x].length || heights[nextX][nextY] < heights[x][y]){continue;}if(t == 0 && flag[nextX][nextY][0]){continue;}if(t == 1 && flag[nextX][nextY][1]){continue;}dfs(heights, nextX, nextY, t);}}
}

三、力扣827. 最大人工岛

class Solution {int[][] move = {{0,1},{0,-1},{-1,0},{1,0}};int count;public int largestIsland(int[][] grid) {int res = 0;int path = 0;int mark = 1;Map<Integer,Integer> map = new HashMap<>();for(int i = 0; i < grid.length; i ++){for(int j = 0; j < grid[0].length; j ++){if(grid[i][j] == 1){count = 0;mark ++;dfs1(grid, i, j, mark);map.put(mark,count);res = Math.max(res,count);}}}for(int i = 0; i < grid.length; i ++){for(int j = 0; j < grid[0].length; j ++){if(grid[i][j] == 0){Set<Integer> set = new HashSet<>();path = 0;for(int t = 0; t < 4; t ++){int nextX = i + move[t][0];int nextY = j + move[t][1];if(nextX < 0 || nextX >= grid.length || nextY < 0 || nextY >= grid[0].length ||grid[nextX][nextY] == 0){continue;}set.add(grid[nextX][nextY]);}for(Integer in : set){path += map.get(in);}path += 1;res = Math.max(res, path);}}}return res;}public void dfs1(int[][] grid, int x, int y, int mark){count ++;grid[x][y] = mark;for(int i = 0; i < 4; i ++){int nextX = x + move[i][0];int nextY = y + move[i][1];if(nextX < 0 || nextX >= grid.length || nextY < 0 || nextY >= grid[0].length || grid[nextX][nextY] == 0 || grid[nextX][nextY] == mark){continue;}dfs1(grid, nextX, nextY, mark);}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/105598.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript-es6-新版语法-export-import

文章目录 1.export2.import3.export default 命令4.总结 在JavaScript ES6中&#xff0c;export与export default均可用于导出常量、函数、文件、模块等。模块功能主要由两个命令构成&#xff1a;export和import。export命令用于规定模块的对外接口&#xff0c;import命令用于输…

接口测试文档

接口测试的总结文档 第一部分&#xff1a;主要从问题出发&#xff0c;引入接口测试的相关内容并与前端测试进行简单对比&#xff0c;总结两者之前的区别与联系。但该部分只交代了怎么做和如何做&#xff1f;并没有解释为什么要做&#xff1f; 第二部分&#xff1a;主要介绍为什…

鸿蒙tabbar ArkTS

鸿蒙tabbar ArkTS 做了仿照现在应用的做了一个tabbar。 官方文档地址 参考文档 tabbar 其中有个比较重要的点是&#xff0c;对image资源的引用问题。 资源相关说明 图片是resources目录下的base目录下的。 media目录下的图片的资源不能添加文件夹&#xff0c;只能是文件&a…

树模型(一)孤立森林

孤立森林&#xff08;Isolation Forest&#xff09;算法是西瓜书作者周志华老师的团队研究开发的算法&#xff0c;一般用于结构化数据的异常检测。 异常的定义 针对于不同类型的异常&#xff0c;要用不同的算法来进行检测&#xff0c;而孤立森林算法主要针对的是连续型结构化…

适用于 Golang 的任务调度程序 AGScheduler

以前一直使用 Python 的任务调度库 APScheduler&#xff08;支持任务持久化&#xff0c;支持多种存储方式&#xff09;&#xff0c;但由于没有找到和它功能和使用方式类似的 Golang 库&#xff0c;所以模仿 APScheduler 3.x 写了个简易版本的 AGScheduler。 AGScheduler Advan…

近地面无人机植被定量遥感与生理参数反演

目录 专题一 近十年近地面无人机植被遥感文献分析、传感器选择、观测方式及质量控制要点 专题二 辐射度量与地物反射特性 专题三 无人机遥感影像辐射与几何处理 专题四 光在植被叶片与冠层中的辐射传输机理及平面模型应用 专题五 植被覆盖度与叶面积指数遥感估算 更多应用…

【LeetCode】21. 合并两个有序链表

1 问题 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4] 示例 2&#xff1a; 输入&#xff1a;l1 [], l2 [] 输出&…

【Node.js】路由

基础使用 写法一&#xff1a; // server.js const http require(http); const fs require(fs); const route require(./route) http.createServer(function (req, res) {const myURL new URL(req.url, http://127.0.0.1)route(res, myURL.pathname)res.end() }).listen…

毕业设计选题Java+springboot校园新闻资讯系统源码 开题 lw 调试

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人七年开发经验&#xff0c;擅长Java、Python、PHP、.NET、微信小程序、爬虫、大数据等&#xff0c;大家有这一块的问题可以一起交流&#xff01; &#x1f495;&…

HT for Web (Hightopo) 使用心得(3)- 吸附与锚点

吸附与锚点是 HT for Web 中两个比较重要的概念。这两个概念在执行交互和动画时会经常被用到。 吸附&#xff0c;顾名思义&#xff0c;是一个节点吸附到另一个节点上。就像船底的贝类一样&#xff0c;通过吸附到船身&#xff0c;在船移动的时候自己也会跟着移动&#xff1b;而…

Oracle update 关联更新优化方法

关联更新顾名思义就是指&#xff0c;更新的数据从关联的表中获取并update到目标表。并且该SQL将会是一个天然的嵌套循环。有两种优化思路解决&#xff1a; 1、PLSQL 根据rowid更新 是否需要加order by rowid的考量&#xff1a; 如果buffer cache足够大&#xff0c;能够放得下要…

蓝桥杯双周赛算法心得——三带一(暴力枚举)

大家好&#xff0c;我是晴天学长&#xff0c;枚举思想&#xff0c;需要的小伙伴可以关注支持一下哦&#xff01;后续会继续更新的。 1) .三带一 2) .算法思路 1.通过Scanner读取输入的整数n&#xff0c;表示接下来有n个字符串需要处理。 2.使用循环遍历每个字符串&#xff1a;…

华为端到端战略管理体系(DSTE开发战略到执行)的运作日历图/逻辑图及DSTE三大子流程介绍

华为端到端战略管理体系&#xff08;DSTE开发战略到执行&#xff09;的运作日历图/逻辑图及DSTE三大子流程介绍 本文作者 | 谢宁&#xff0c;《华为战略管理法&#xff1a;DSTE实战体系》、《智慧研发管理》作者 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#…

VUE 弹出输入框

html代码: 主要是设置一个按钮,绑定点击事件 <el-button size="mini" @click="addOrganization(row)">新增</el-button>JS代码: 下面是element-ui的代码,里面有邮箱格式匹配公式,应该以后还会用到 element-ui的链接附上&#

es6(三)—— set(集合) 和map的使用

ES6的系列文章目录 第一章 Python 机器学习入门之pandas的使用 文章目录 ES6的系列文章目录一、set&#xff08;集合&#xff09;0. 定义1. 基本使用2.常用方法&#xff08;1&#xff09;代码&#xff08;2&#xff09;效果&#xff08;3&#xff09;遍历 二、map0. 定义1. 基…

Stable Diffusion绘图,lora选择

best quality, ultra high res, (photorealistic:1.4), 1girl, off-shoulder white shirt, black tight skirt, black choker, (faded ash gray hair:1), looking at viewer, closeup <lora:koreandolllikeness_v20:0.66> 最佳品质&#xff0c;超高分辨率&#xff0c;&am…

【C++】继承 -- 详解

一、继承的概念及定义 1、继承的概念 继承 (inheritance) 机制是面向对象程序设计使代码可以复用的最重要的手段&#xff0c;它允许程序员在保 持原有类特性的基础上进行扩展&#xff0c;增加功能&#xff0c;这样产生新的类&#xff0c;称派生类。 继承呈现了面向对象 程序设…

极限号可以拿到函数的内部吗?【复合函数中极限的进入】

极限号无脑直接拿进来 1.1 如果f&#xff08;极限值&#xff09;在该点连续&#xff0c;ojbk&#xff0c;拿进来。 1.2 如果f&#xff08;极限值&#xff09;不存在或不连续&#xff0c;不能拿进来&#xff0c;出去。

【操作系统】磁臂黏着现象

文章目录 什么是磁臂黏着&#xff1f;为什么 FCFS&#xff08;First Come First Service&#xff09; 可以避免磁臂黏着&#xff1f;为什么 scan&#xff0c;cscan 会产生磁臂黏着&#xff1f;为什么 NsetpScan 可以避免磁臂黏着&#xff1f;NScan 原理简介NScan 避免磁臂黏着的…

【React】03-React面向组件编程2

文章目录 2.6. 组件的生命周期2.6.1. 效果2.6.2. 理解2.6.3. 生命周期流程图(旧)2.6.4. 生命周期流程图(新)2.6.5. 重要的勾子2.6.6. 即将废弃的勾子2.6.7 getSnapshotBeforeUpdate 2.7. 虚拟DOM与DOM Diffing算法2.7.1. 效果2.7.2. 基本原理图 2.6. 组件的生命周期 2.6.1. 效…