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

2026 年 3 月 15 日刷题

今天的题目是有关 BFS 广度优先搜索的。BFS 可以理解是从树的顶端一层一层往下逐层遍历。维护一个队列,在遍历过程中不断加入符合要求的元素,最后当队列为空时返回。

207 课程表

这道题目是拓扑排序,就是将一张有向无环图按照层次来遍历,用 BFS。下面是代码实现。

class Solution { public: bool canFinish(int numCourses, vector<vector<int>>& prerequisites) { vector<int> indegrees(numCourses,0); vector<vector<int>> adj(numCourses); for (auto element: prerequisites) { int ai = element[0]; int bi = element[1];//要学ai必须先学bi indegrees[ai]++; adj[bi].push_back(ai); } queue<int> que; //下面将入度为 0 的元素加入队列 for (int i = 0; i < numCourses; i++) { if (indegrees[i] == 0) { que.push(i); } } int completed = 0; while (!que.empty()) { int temp = que.front(); que.pop(); completed ++; for (int next : adj[temp]) { indegrees[next]--; if (indegrees[next] == 0) { que.push(next); } } } if (completed == numCourses) { return true; } return false; } };

200 岛屿数量

这道题目也是 BFS,直接上代码。

class Solution { public: int numIslands(vector<vector<char>>& grid) { if (grid.size() == 0 || grid[0].size() == 0) { return 0; } int rows = grid.size(); int columns = grid[0].size(); int count = 0; // 方向数组:上下左右四个方向 vector<pair<int, int>> dirs = {{-1,0}, {1,0}, {0,-1}, {0,1}}; for (int i = 0; i < rows; i++) { for (int j = 0; j < columns; j++) { if (grid[i][j] == '1') { count++; queue<pair<int, int>> que; que.push({i,j}); grid[i][j] = '0'; while (!que.empty()) { pair<int, int> xy = que.front(); que.pop(); int x = xy.first; int y = xy.second; for (auto dir: dirs) { int dx = dir.first; int dy = dir.second; int nx = dx + x; int ny = dy + y; if (nx >= 0 && nx < rows && ny >= 0 && ny < columns && grid[nx][ny] == '1') { que.push({nx,ny}); grid[nx][ny] = '0'; } } } } } } return count; } };

C++ 中 queue 和 unordered_map

queue<T> que; que.push(A);//队尾入队 que.pop();//删除队头元素 que.front();//返回队头元素 que.back();//返回队尾元素 que.empty();//判断队列是否为空
unordered_map<T,N> map; map.insert(P);//插入键值对 map.count(key);//查看是否有这个 key map.erase(key);//删除键值 map.find(key);//查找这个键值是否存在,不存在返回 map.end()
http://www.jsqmd.com/news/486369/

相关文章:

  • 便捷省心!手机数码租赁小程序前端功能玩法详解
  • 接收单元之变:SPAD-SoC如何重构激光雷达的“视网膜”
  • 2026贵阳装修公司专业实力TOP5名单出炉,权威数据揭示行业格局 - 精选优质企业推荐榜
  • 基于最小二乘支持向量机(LSSVM)的多输出数据回归预测
  • 蛋白质表达技术要点分析:从载体构建到系统选择的全面指南
  • 在线问诊系统, 在线问诊平台, 互联网医院,2026java毕业设计项目, 简历项目, 个人学习项目
  • 从零起步学习MySQL 第十二章:MySQL分页性能如何优化?
  • 2026多平台后台模板,包括:Html、Laravel、react、VUE、dotnet、angular
  • CUDA编程学习(四)内存拷贝
  • 基于FPGA的AM调制解调:包含ModelSim仿真、Quartus 18.1与Vivado ...
  • RFID读写器怎么选更适合企业现场?
  • 国内知名半导体核心部件论坛盘点,2026从业者必关注(附核心亮点) - 品牌2025
  • 2026贵阳室内装修数据出炉:本地口碑TOP5品牌权威盘点 - 精选优质企业推荐榜
  • 文件包含PHP_INCLUDE_TO_SHELL_CHAR_DICT工具详解
  • 2026贵阳装修公司5强名单公布,本地市场格局数据出炉 - 精选优质企业推荐榜
  • 4节点光储直流微网:多目标控制下的光伏MPPT与储能双向DCDC的二次优化与多智能体一致性研究
  • 2026贵阳室内设计5强名单出炉,权威机构发布行业现状 - 精选优质企业推荐榜
  • 2026年三防布批发TOP10企业揭晓,谁将领跑行业?
  • 虚拟机(Red Hat)部署后的优化
  • 2026高二生免高考留学新加坡全指南:避开内卷,直通世界名校 - 品牌2026
  • 超绝openclaw技能skill,herHug让AI更懂你
  • 计算机毕业设计 java 虚拟股票交易系统 Java+SpringBoot 模拟股票交易平台 Web 版股市虚拟交易实训系统
  • 【云藏山鹰代数信息系统】琴语言基础100讲之琴语言解析器梅开二度设计
  • 技术裸奔时代:软件测试行业的社交货币陷阱与专业重构
  • 制造知识断层:软件测试工程师的不可替代性构建策略
  • 基于MATLAB的Kmeans自动寻找最佳聚类中心App:‘手肘法‘确定k值与聚类结果可视化
  • 2026年最新完整java面试题(含答案)
  • 老牌智造,长效守护:2026全国风机五强赋能全场景通风安全能效新标杆 - 深度智识库
  • openYuanrong Agent 方向真实案例验证
  • 基于FPGA的DisplayPort Transmitter IP纯源码,使用fpga的gt收发器