C/C++---------------LeetCode第1436. 旅行终点站

news/2024/9/23 9:24:24/

旅行的终点站

  • 题目及要求
  • 哈希算法
  • 在main内使用

题目及要求

给你一份旅游线路图,该线路图中的旅行线路用数组 paths 表示,其中 paths[i] = [cityAi, cityBi] 表示该线路将会从 cityAi 直接前往 cityBi 。请你找出这次旅行的终点站,即没有任何可以通往其他城市的线路的城市。

题目数据保证线路图会形成一条不存在循环的线路,因此恰有一个旅行终点站。

示例 1:

输入:paths = [[“London”,“New York”],[“New York”,“Lima”],[“Lima”,“Sao Paulo”]]
输出:“Sao Paulo”
解释:从 “London” 出发,最后抵达终点站 “Sao Paulo” 。本次旅行的路线是 “London” -> “New York” -> “Lima” -> “Sao Paulo” 。
示例 2:

输入:paths = [[“B”,“C”],[“D”,“B”],[“C”,“A”]]
输出:“A”
解释:所有可能的线路是:
“D” -> “B” -> “C” -> “A”.
“B” -> “C” -> “A”.
“C” -> “A”.
“A”.
显然,旅行终点站是 “A” 。
示例 3:

输入:paths = [[“A”,“Z”]]
输出:“Z”

提示:

1 <= paths.length <= 100
paths[i].length == 2
1 <= cityAi.length, cityBi.length <= 10
cityAi != cityBi
所有字符串均由大小写英文字母和空格字符组成。

哈希算法

思路:我们首先使用unordered_set startCities来记录所有出现过的起始城市,然后再次遍历paths,对于每条路径p,如果它的目标城市p[1]不在startCities中,即没有作为起始城市出现过,那么直接返回该目标城市作为结果。

class Solution {
public:string destCity(vector<vector<string>>& paths) {//用于存储所有起始城市。unordered_set<string> startCities;// 遍历路径数组,将每个路径的起始城市添加到集合中。for (auto p : paths) {startCities.insert(p[0]);}// 再次遍历路径数组,对于每个路径,如果目的城市在 startCities 集合中不存在,说明该城市只作为终点,没有作为起点,因此将其作为结果返回。for (auto p : paths) {if (startCities.find(p[1]) == startCities.end()) {return p[1];}}// 如果遍历完所有路径后都没有找到符合条件的目的地城市,则返回空字符串。return "";}
};

在main内使用

int main() {// 创建一个 Solution 对象Solution solution;// 创建一个包含路径的二维字符串数组vector<vector<string>> paths = {{"A", "B"}, {"B", "C"}, {"C", "D"}, {"D", "E"}};// 调用 destCity 函数来找到目的地城市string destination = solution.destCity(paths);// 打印结果cout << "终点是: " << destination << endl;return 0;
}

http://www.ppmy.cn/news/1235397.html

相关文章

《第一行代码:Android》第三版-2.4.1 if 语句

本文主要讲解if语句&#xff0c;kotlin的if语句是可以有返回值的&#xff0c;就是if语句的最后一句话就是返回值。 /*** You can edit, run, and share this code.* play.kotlinlang.org*/fun main() {println("Hello, world!!!") val largelargerNumber(5,9) prin…

ffmpeg播放器实战(播放器流程)

1.流程图 1.main窗口创建程序窗口 程序窗口构造函数执行下面内容 2.开启播放 3.开启解码 4.开启渲染 5.反馈给ui 本文福利&#xff0c; 免费领取C音视频学习资料包学习路线大纲、技术视频/代码&#xff0c;内容包括&#xff08;音视频开发&#xff0c;面试题&#xff0c;FFmpeg…

考过了PMP,面试的时候应该怎么办?

近期喜番在后台收到了很多同学们的私信&#xff0c;表示自己已经过了8月份的PMP考试&#xff0c;开始着手往项目管理岗位转型&#xff0c;但是对于项目管理岗位的面试却一筹莫展。放轻松&#xff0c;大家的需求喜番都了解了&#xff0c;喜番给大家总结了一些项目经理在面试的时…

Ubuntu18 Opencv3.4.12 viz 3D显示安装、编译、使用、移植

Opencv3.*主模块默认包括两个3D库 calib3d用于相机校准和三维重建 &#xff0c;viz用于三维图像显示&#xff0c;其中viz是cmake选配。 参考&#xff1a; https://docs.opencv.org/3.4.12/index.html 下载linux版本的源码 sources。 查看cmake apt list --installed | grep…

Servlet---上传文件

文章目录 上传文件的方法上传文件的示例前端代码示例后端代码示例 上传文件的方法 上传文件的示例 前端代码示例 <body><form action"upload" method"post" enctype"multipart/form-data"><input type"file" name&qu…

vue项目使用easyplayer播放m3u8直播推流

官网 青犀视频 代码库 / 示例 / demo EasyPlayer 示例效果&#xff1a; 项目背景如图 后端给了m3u8的直播地址 协议是 hls / flv 市面上很多第三方热门播放库都可以完成该多屏播放方式 如Video.js 问题在于 分多屏时 会存在性能问题 并且关闭播放器后 即便删除Dom或调用停…

Linux 常用命令学习笔记

Linux 常用命令学习笔记 1. 查看文件和目录 列出文件和目录详细信息 ls -al参数说明&#xff1a; -a&#xff1a;显示所有文件&#xff0c;包括隐藏文件。-l&#xff1a;以列表形式显示&#xff0c;并包含文件的详细信息&#xff0c;如权限、所有者、大小等。 2. 列出进程…

npm安装 node-sass

第一步&#xff1a;安装node-gyp 1.: npm install node-gyp -g2.: node-gyp install3.: npm install node-sass