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

BFS和codetop复习

BFS和codetop复习

  • BFS
    • 1.[图像渲染](https://leetcode.cn/problems/flood-fill/description/)
    • 2.[岛屿数量](https://leetcode.cn/problems/number-of-islands/)
    • 3.[岛屿的最大面积](https://leetcode.cn/problems/max-area-of-island/description/)
    • 4.[被围绕的区域](https://leetcode.cn/problems/surrounded-regions/description/)
  • 2.递归
    • 1.[反转链表](https://leetcode.cn/problems/reverse-linked-list/)

BFS

1.图像渲染

在这里插入图片描述

class Solution {
public:vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int color) {if(image[sr][sc]!=color) dfs(image,sr,sc,color,image[sr][sc]);return image;}int dx[4]={-1,1,0,0};int dy[4]={0,0,-1,1};void dfs(vector<vector<int>>& image, int r, int c, int newcolor,int oldcolor){   //先写越界条件if(r<0||c<0||r>=image.size()||c>=image[0].size()) return;if(image[r][c]==oldcolor)//如果是旧颜色{image[r][c]=newcolor;//这变成新颜色//然后从四个方向去遍历for(int i=0;i<4;i++) dfs(image,r+dx[i],c+dy[i],newcolor,oldcolor);  //这里要加dx[i],dy[i]                        }}
};

2.岛屿数量

把是1的岛屿全部标记,每次上下左右走到底之后,ret++
在这里插入图片描述

class Solution {
public:int numIslands(vector<vector<char>>& sl) {int ret=0;for(int i=0;i<sl.size();i++)for(int j=0;j<sl[0].size();j++)if(sl[i][j]=='1'){dfs(sl,i,j);ret++;}return ret;}int dx[4]={-1,1,0,0};int dy[4]={0,0,-1,1};void dfs(vector<vector<char>>& sl,int x,int y){if(x<0||y<0||x>=sl.size()||y>=sl[0].size()||sl[x][y]!='1') return;//把这份方格里所有1全变成2sl[x][y]='2';for(int i=0;i<4;i++){dfs(sl,x+dx[i],y+dy[i]);}}
};

3.岛屿的最大面积

//这里把每个岛屿的面积先用cur记录,出dfs的时候再与s作比较
//把每个岛屿的1用2替换避免重复记录(cur++)
//每次进dfs的时候初始化cur=0;
在这里插入图片描述

4.被围绕的区域

  //先从边缘搜索然后改成1,再遍历把x->o,再把1->o

在这里插入图片描述

2.递归

1.反转链表

//1.链表是一种特殊的树,逆置只需要做一次后序遍历
//2.相信dfs
在这里插入图片描述
在这里插入图片描述

http://www.dtcms.com/a/333382.html

相关文章:

  • 复杂度扫尾+链表经典算法题
  • Klipper-probe模块
  • H5449G降压恒流无人机照明驱动芯片方案24V/36V/48V/72V降6V12V9V /8A替换NCL30160
  • 探索无人机图传技术:创新视野与无限可能
  • C#WPF实战出真汁06--【系统设置】--餐桌类型设置
  • Linux 系统中, LANG 和 LC_ALL变量有什么区别与联系?
  • 文档对比(java-diff-utils)
  • lidar2imu/auto_caliban以及manual_calib安装过程
  • 8.15网络编程——UDP和TCP并发服务器
  • qs是什么?
  • Python入门第3课:Python中的条件判断与循环语句
  • Ubuntu20.04下Remmina的VNC密码忘记后重置
  • 手机场景性能测试中的部分关键指标
  • Layui 语法详解与全功能示例
  • iOS 性能监控实战,多工具协作完成全方位分析
  • LCR 076. 数组中的第 K 个最大元素
  • 代码随想录刷题Day33
  • [优选算法专题二滑动窗口——长度最小的子数组]
  • 【完整源码+数据集+部署教程】电池柱状态检测系统源码和数据集:改进yolo11-TADDH
  • 华为交换机配置文件的相关命令和用法
  • 深入解析五大通信协议:TCP、UDP、HTTP_HTTPS、WebSocket与GRPC
  • Linux:套接字
  • shell脚本实现sha256sum校验并拷贝校验通过的文件
  • 从模拟实现插入去理解AVL树的旋转平衡
  • 波浪模型SWAN学习(1)——模型编译与波浪折射模拟(Test of the refraction formulation)
  • 为什么哈希表(字典)的查询速度有时会突然变慢
  • 2025世界职业院校技能大赛汽车制造与维修赛道(中职组)参赛指南
  • 提升化工制造质量的 7 种方法
  • 制造企业仓储管理焕新!金指云 “一物一码” 破解混乱难题,库存成本直降 30%
  • Spring 条件注解与 SPI 机制(深度解析)