当前位置:首页 > 编程笔记 > 正文
已解决

图论第四天|127. 单词接龙、841. 钥匙和房间、463. 岛屿的周长

来自网友在路上 152852提问 提问时间:2023-09-18 22:44:48阅读次数: 52

最佳答案 问答题库528位专家为你答疑解惑

127. 单词接龙 ★

文档讲解 :代码随想录 - 127. 单词接龙
状态:开始学习。(★:需要多次回顾并重点回顾)

思路:
单词接龙
本题需要解决两个问题:

  1. 图中的线是如何连在一起的
    题目中并没有给出点与点之间的连线,而是要我们自己去连,条件是字符只能差一个,所以判断点与点之间的关系,要自己判断是不是差一个字符,如果差一个字符,那就是有链接。
  2. 起点和终点的最短路径长度
    这里无向图求最短路,广搜最为合适,广搜只要搜到了终点,那么一定是最短的路径。

另外注意点:

  • 本题是一个无向图,需要用标记位,标记着节点是否走过,否则就会死循环!
  • 本题给出集合是数组型的,可以转成set结构,查找更快一些

本题代码:

class Solution {
public:int ladderLength(string beginWord, string endWord, vector<string>& wordList) {// 将vector转成unordered_set,提高查询速度unordered_set<string> wordSet(wordList.begin(), wordList.end());// 如果endWord没有在wordSet出现,直接返回0if (wordSet.find(endWord) == wordSet.end()) return 0;// 记录word是否访问过unordered_map<string, int> visitMap; // <word, 查询到这个word路径长度>// 初始化队列queue<string> que;que.push(beginWord);// 初始化visitMapvisitMap.insert(pair<string, int>(beginWord, 1));while(!que.empty()) {string word = que.front();que.pop();int path = visitMap[word]; // 这个word的路径长度for (int i = 0; i < word.size(); i++) {string newWord = word; // 用一个新单词替换word,因为每次置换一个字母for (int j = 0 ; j < 26; j++) {newWord[i] = j + 'a';if (newWord == endWord) return path + 1; // 找到了end,返回path+1// wordSet出现了newWord,并且newWord没有被访问过if (wordSet.find(newWord) != wordSet.end()&& visitMap.find(newWord) == visitMap.end()) {// 添加访问信息visitMap.insert(pair<string, int>(newWord, path + 1));que.push(newWord);}}}}return 0;}
};

841. 钥匙和房间

文档讲解 :代码随想录 - 841. 钥匙和房间
状态:开始学习。

思路:深搜三部曲

  1. 确认递归函数,参数
    // key 当前得到的可以 
    // visited 记录访问过的房间 
    void dfs(const vector<vector<int>>& rooms, int key, vector<bool>& visited) {
    
  2. 确认终止条件
    if (visited[key]) { // 本层递归是true,说明访问过,立刻返回return;
    }
    
  3. 处理目前搜索节点出发的路径
        for (int key : keys) { if (visited[key] == false) { // 处理下一层节点,判断是否要进行递归visited[key] = true;dfs(rooms, key, visited);}       }
    

本题代码:

class Solution {
private:void dfs(const vector<vector<int>>& rooms, int key, vector<bool>& visited) {if (visited[key]) {return;}visited[key] = true;vector<int> keys = rooms[key];for (int key : keys) {// 深度优先搜索遍历dfs(rooms, key, visited);}}
public:bool canVisitAllRooms(vector<vector<int>>& rooms) {vector<bool> visited(rooms.size(), false);dfs(rooms, 0, visited);//检查是否都访问到了for (int i : visited) {if (i == false) return false;}return true;}
};

463. 岛屿的周长

文档讲解 :代码随想录 - 463. 岛屿的周长
状态:开始学习。

简单题没必要DFS或者BFS

思路:
遍历每一个空格,遇到岛屿,计算其上下左右的情况,遇到水域或者出界的情况,就可以计算边了。
岛屿周长
本题代码:

class Solution {
public:int direction[4][2] = {0, 1, 1, 0, -1, 0, 0, -1};int islandPerimeter(vector<vector<int>>& grid) {int result = 0;for (int i = 0; i < grid.size(); i++) {for (int j = 0; j < grid[0].size(); j++) {if (grid[i][j] == 1) {for (int k = 0; k < 4; k++) {       // 上下左右四个方向int x = i + direction[k][0];int y = j + direction[k][1];    // 计算周边坐标x,yif (x < 0                       // i在边界上|| x >= grid.size()     // i在边界上|| y < 0                // j在边界上|| y >= grid[0].size()  // j在边界上|| grid[x][y] == 0) {   // x,y位置是水域result++;}}}}}return result;}
};
查看全文

/2175417.html

相关文章:

  • 神经网络 02(激活函数)
  • 华为云云耀云服务器L实例评测|一个2C2G3M的云服务器能做哪些有有趣的事儿?
  • 有效的括号(栈的高频面试题)
  • 【数据结构】堆的应用+TOP-K问题+二叉树遍历
  • 数据库连接工具Chat2DB介绍
  • C# 流Stream详解(3)——FileStream源码
  • Vue Grid Layout -️ 适用Vue.js的栅格布局系统,在vue3+上使用
  • [maven] maven 创建 web 项目并嵌套项目
  • vue3-vant4-vite-pinia-axios-less学习日记
  • 二叉树题目:层数最深叶子结点的和
  • Java手写约瑟夫问题算法和约瑟夫问题算法应用拓展案例
  • innovus: 各种padding一勺烩
  • 简单的分析下dart实现grpc客户端的流程,以helloworld为例
  • stm32--独立看门狗
  • GcExcel:Java 应用创建、修改和保存 Excel 电子表格 -Crack
  • 腾讯mini项目-【指标监控服务重构】2023-08-19
  • leetcode363周赛
  • new/delete, malloc/free 内存泄漏如何检测
  • 无涯教程-JavaScript - ODD函数
  • 阿里云无影电脑:免费体验无影云电脑3个月
  • 嵌入式学习笔记(25)串口通信的基本原理
  • 前后端分离技术逐步深入,让你更加深入理解Nginx+Tomcat
  • Linux学习第11天:字符设备驱动开发:一字一符总见情
  • windows彻底卸载unity
  • 前端html原生页面兼容多端H5和移动端适配方案
  • 系统性能调优:提升服务器响应速度
  • PHP通过pem文件校验签名异常
  • 【C++ Exceptions】Catch exceptions by reference!
  • 科技资讯|苹果虚拟纸可在Vision Pro中为广告、书籍等提供MR内容和动画
  • webpack静态资源上传到CDNS (阿里云 OSS,亚马逊 AWS S3,七牛云 Qiniu Cloud Kodo)webpack-plugin-cdns
  • VMware workstation 中centos7虚拟机在nat模式下怎么配置网卡,指定我想要的IP并且可以联网
  • Flask 使用 JWT(一)
  • 【ant-design-vue】ant-design-vue在uniapp使用时,auto-import失败报错
  • 一文通览腾讯云大数据ES、数据湖计算、云数据仓库产品新版本技术创新
  • cuda以及pytorch安装
  • Xilinx FPGA 7系列 GTX/GTH Transceivers (2)--IBERT
  • oracle创建数据库以及用户,并导入dmp格式数据
  • 每个高级前端工程师都应该知道的前端布局
  • 微软发现影响 Linux 和 macOS系统的 ncurses 库漏洞
  • 前后端开发接口联调对接参数
  • 线性代数的本质(一)——向量空间
  • Maven 工具学习笔记(基础)
  • reg与wire的用法,证明reg可以在右边,wire型在左边,来作组合逻辑处理。
  • 【JDK 8-函数式编程】4.5 Predicate
  • html网页制作期末大作业-网上花店商城html+css+javascript
  • 2023年11月25日PMP报名正式开始!附操作指南
  • 伦敦银时走势与获利机会
  • 【数据结构】单值二叉树 相同的树 翻转二叉树(五)
  • 从0搭建夜莺v6基础监控告警系统(一):基础服务安装
  • three.js——模型对象的使用材质和方法
  • Java手写红黑树
  • 华为HCIA(四)
  • MyBatis面试题(一)
  • ARM cortex-A7核LED灯点灯实验
  • vue学习-01vue入门
  • K8s(Kubernetes)学习(六)——Ingress
  • 8种LED显示屏的安装方式
  • zabbix学习1--zabbix6.x单机
  • 一文了解水雨情在线监测站的优势
  • QSlider风格设置
  • GaussDB(DWS)云原生数仓技术解析:湖仓一体,体验与大数据互联互通
  • 项目性能优化 - 并发编程合并文章详情页的 HTTP 请求次数
  • linux基础篇
  • MATLAB中filloutliers函数用法
  • 蓝桥杯2023年第十四届省赛真题-买瓜--Java题解
  • OpenText EnCase Mobile Investigator 查看、分析和报告被调查手机的证据
  • 83 # 静态服务中间件 koa-static 的使用以及实现
  • 计算机网络第四章——网络层(下)
  • 09MyBatisX插件
  • JMeter基础 —— 使用Badboy录制JMeter脚本!
  • 蓝牙核心规范(V5.4)10.1-BLE 入门笔记(1)
  • Java实现图书管理系统
  • 评价模型:层次分析法
  • 【免费内网穿透】cpolar从0开始使用
  • 面试中常见的算法题和其python实现
  • flask+python快速搭建
  • 手把手教你搭建农产品商城小程序:详细步骤解析
  • 信息化助力高校教育统计数据质量的提升
  • 4G模块驱动移植
  • 软件测试团队必看:测试指标 TOP 3 榜单
  • 【seata】引入seata导致原本自定义实现的RequestInterceptor失效
  • SSM - Springboot - MyBatis-Plus 全栈体系(七)
  • TypeScript逆变 :条件、推断和泛型的应用
  • OpenStack创建云主机并连接CRT
  • 04Spring的核心配置文件
  • 构建个人图床云盘—EasyImage的简单部署及远程访问配置
  • 计算机网络选择题笔记
  • 【AI语言大模型】文心一言功能使用介绍
  • JSP ssm 网上求职管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计
  • 2021年电工杯数学建模A题高铁牵引供电系统运行数据分析及等值建模求解全过程论文及程序
  • List 获取前N条数据
  • 虹科分享 | 来自Redis7.2的一封信:亲爱的Programmer,当你......
  • 抖音小店经营指南:在兴趣电商背景下打造成功的抖音店铺
  • ts 泛型基础介绍
  • AOSP Android 系统源码编译出的framework.jar和android.jar之间的区别
  • 【实战】H5 页面同时适配 PC 移动端 —— 旋转横屏
  • 代码随想录算法训练营第55天 | ● 392.判断子序列 ● 115.不同的子序列
  • 构建本地Web小游戏网站:Ubuntu下的快速部署与公网用户远程访问
  • Unity中UI组件对Shader调色
  • PostgreSQL serial类型
  • 99%的人还看了

    猜你感兴趣

    版权申明

    本文"图论第四天|127. 单词接龙、841. 钥匙和房间、463. 岛屿的周长":http://eshow365.cn/6-8930-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!