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

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.xdnf.cn/news/17842.html

相关文章:

  • 【Java Web 快速入门】十、AOP
  • 自动处理考勤表——如何使用Power Query,步步为营,一点点探索自定义函数
  • LeetCode Hot100:递归穿透值传递问题
  • 艾伦·图灵:计算理论与人工智能的奠基人
  • Java研学-SpringCloud(四)
  • Numerical Difference between vLLM logprobs and huggingface logprobs
  • 数据结构:N叉树 (N-ary Tree)
  • Web 开发 15
  • 4.2 寻址方式 (答案见原书 P341)
  • CIAIE 2025上海汽车内外饰展观察:从美学到功能的产业跃迁
  • Tokenizer(切词器)的不同实现算法
  • 《软件工程导论》实验报告四 详细设计工具
  • 打靶日常-sql注入(手工+sqlmap)
  • 嵌入式学习 day52 IMX6ULL裸机开发-I2C
  • 功能组和功能组状态的概念关系和区别
  • Cursor/VSCode/VS2017 搭建Cocos2d-x环境,并进行正常的调试和运行(简单明了)
  • Docker的相关知识探究详解
  • Linux驱动学习day28(USB驱动,libusb操作)
  • RabbitMQ核心架构与应用
  • DeepSeek-V2:一种强大、经济且高效的混合专家语言模型
  • 区块链技术原理(13)-以太坊燃料费Gas
  • 【数据结构初阶】--排序(三):冒泡排序、快速排序
  • 旋钮键盘项目---foc讲解(开环)
  • 基于WSL搭建Ubuntu 22.04.x LTS开发环境
  • 102、【OS】【Nuttx】【周边】文档构建渲染:安装 Esbonio 服务器
  • Codeforces 无路可走
  • Git代码版本管理
  • 一文打通 AI 知识脉络:大语言模型等关键内容详解
  • Python基础-数据结构
  • 【部署K8S集群】 1、安装前环境准备配置