LeetCode 399. 除法求值(图的DFS搜索)

1. 题目

给出方程式 A / B = k, 其中 A 和 B 均为用字符串表示的变量, k 是一个浮点型数字。
根据已知方程式求解问题,并返回计算结果。如果结果不存在,则返回 -1.0。

示例 :
给定 a / b = 2.0, b / c = 3.0
问题: a / c = ?, b / a = ?, a / e = ?, a / a = ?, x / x = ? 
返回 [6.0, 0.5, -1.0, 1.0, -1.0 ]输入为: 
vector<pair<string, string>> equations, 
vector<double>& values, 
vector<pair<string, string>> queries(方程式,方程式结果,问题方程式), 
其中 equations.size() == values.size(),
即方程式的长度与方程式结果长度相等(程式与结果一一对应),并且结果值均为正数。
以上为方程式的描述。 返回vector<double>类型。基于上述例子,输入如下:
equations(方程式) = [ ["a", "b"], ["b", "c"] ],
values(方程式结果) = [2.0, 3.0],
queries(问题方程式) = [ ["a", "c"], ["b", "a"], ["a", "e"], ["a", "a"], ["x", "x"] ]. 
输入总是有效的。你可以假设除法运算中不会出现除数为0的情况,且不存在任何矛盾的结果。

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/evaluate-division
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

class Solution {unordered_map<string,unordered_map<string,double>> m;//图的矩阵表示unordered_set<string> visited;vector<double> ans;bool found;int idx = 0;
public:vector<double> calcEquation(vector<vector<string>>& equations, vector<double>& values, vector<vector<string>>& queries) {for(int i = 0; i < equations.size(); ++i){m[equations[i][0]][equations[i][1]] = values[i];//正向m[equations[i][1]][equations[i][0]] = 1.0/values[i];//反向}ans.resize(queries.size());for(int i = 0; i < queries.size(); ++i){if(queries[i][0] == queries[i][1])//分子分母一样{if(m.count(queries[i][0]))ans[idx++] = 1.0;elseans[idx++] = -1.0;continue;}else if(m.count(queries[i][0]) && m[queries[i][0]].count(queries[i][1])){ans[idx++] = m[queries[i][0]][queries[i][1]];//存在通路,直接读取continue;}found = false;visited.insert(queries[i][0]);//访问标记dfs(queries[i][0], queries[i][0], queries[i][1], 1.0);if(!found)ans[idx++] = -1.0;visited.erase(queries[i][0]);//回溯}return ans;}void dfs(string& from, string mid, string &to, double v){if(found)return;if(mid == to)//找到了{ans[idx++] = v;m[from][to] = v;//存取起来,方便后面直接读取m[to][from] = 1.0/v;found = true;return;}for(auto it = m[mid].begin(); it != m[mid].end(); ++it){if(!visited.count(it->first))//没访问过到达点{visited.insert(it->first);//访问标记dfs(from, it->first, to, v*m[mid][it->first]);//一路上value相乘visited.erase(it->first);//回溯}}}
};

8 ms 7.9 MB

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/475723.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vbs调用WebService -- 使用xmlhttp

具体调用的代码&#xff1a; 向指定的文件写入文本, 并指定是否是添加内容 Function Z_WriteFile(sFileName, sText, bAppend)Dim fs, fso, iomodeif bAppend True Theniomode 8 ForAppendingelseiomode 2 ForWritingend ifset fs CreateObject(…

大型软件是否占用计算机内存,电脑系统开机内存占用多少正常

原标题&#xff1a;电脑系统开机内存占用多少正常正常情况下有多少启动内存&#xff1f;如果使用2G内存&#xff0c;则Win7在启动时基本上可以达到50&#xff05;以上&#xff0c;运行点程序肯定会达到80&#xff05;&#xff0c;这是正常的。如果使用4G内存&#xff0c;则Win7…

LeetCode 990. 等式方程的可满足性(并查集)

1. 题目 给定一个由表示变量之间关系的字符串方程组成的数组&#xff0c;每个字符串方程 equations[i] 的长度为 4&#xff0c;并采用两种不同的形式之一&#xff1a;"ab" 或 "a!b"。 在这里&#xff0c;a 和 b 是小写字母&#xff08;不一定不同&#xf…

breakcontinue

break 在循环语句的循环体中&#xff0c;用来提前结束当前循环体&#xff0c;执行循环体后面的语句。 continue 跳过循环体中continue后面尚未执行的语句&#xff0c;直接进行下一次是否执行循环的判定。即只结束本次循环。转载于:https://www.cnblogs.com/happykakeru/archive…

司爱侠计算机英语教程第五版翻译,计算机英语教程 教学课件 作者 司爱侠 张强华 参考译文.doc...

附录1 参考译文Unit 1PC的基本部件1&#xff0e;处理器处理器是计算机的大脑。它也被称为微处理器或CPU。它解释从其它设备接收的全部指令&#xff0c;并执行这些指令&#xff0c;如让打印机打印。一般来讲&#xff0c;处理器的速度越快&#xff0c;计算机通常能够执行指令和任…

LeetCode 1267. 统计参与通信的服务器(计数)

1. 题目 这里有一幅服务器分布图&#xff0c;服务器的位置标识在 m * n 的整数矩阵网格 grid 中&#xff0c;1 表示单元格上有服务器&#xff0c;0 表示没有。 如果两台服务器位于同一行或者同一列&#xff0c;我们就认为它们之间可以进行通信。 请你统计并返回能够与至少一…

Informix IDS 11系统料理(918查验)认证指南,第 4 部分: 功能调优(5)

更新统计信息的调优IDS 使用基于本钱的优化器&#xff1a;当优化器确定盘诘规画时&#xff0c;它为每个可以的规画付与一个本钱&#xff0c;然后选择本钱最低的规画。下面是优化器用于确定每个盘诘规画的本钱的一些要素&#xff1a;与每个文件系统会见相干的 I/O 请求的数目 确…

计算机网络中广域网和局域网的分类是,计算机网络中广域网和局域网的分类是以信息交换方式来划分的。 - 问答库...

问题&#xff1a;[判断题] 计算机网络中广域网和局域网的分类是以信息交换方式来划分的。A . 正确B . 错误You perform a security audit on a server named Server1. You install the Microsoft Network Monitor 3.0 application on Server1.You find th…

Yakuake 2.8 beta1

Toy Posted in AppsRSSTrackback Yakuake 这个终端模拟器我们已经批评过&#xff0c;它可以将一些异常不错的下场融入到你的终端体验中。本日&#xff0c;该办法推出了 2.8 beta1 版&#xff0c;新增了皮肤经管、全屏情势、以及可将会话别离到多个终端窗口等功用。- Download Y…

LeetCode 974. 和可被 K 整除的子数组(哈希map)

1. 题目 给定一个整数数组 A&#xff0c;返回其中元素之和可被 K 整除的&#xff08;连续、非空&#xff09;子数组的数目。 示例&#xff1a; 输入&#xff1a;A [4,5,0,-2,-3,1], K 5 输出&#xff1a;7 解释&#xff1a; 有 7 个子数组满足其元素之和可被 K 5 整除&…

怎样用计算机添加文章标题,计算机论文题目怎么定-易指做帮写网

1.相关理论基础分析1.1宠物救助系统理论阐述在很多区域&#xff0c;猫和狗等小动物均处于一种散养的状态&#xff0c;这样一来就使其成为流浪动物&#xff0c;无家可归&#xff0c;在城市的街道上游走。此外&#xff0c;由于流浪猫狗的繁衍速度较快&#xff0c;壮大流浪动物的群…

数据字典表Truncate丢失将招致数据库不可用

泉源&#xff1a;赛迪网 作者&#xff1a;Arvin在梦想的义务环境下&#xff0c;假如你在操作时将数据库内的几个数据字典表Truncate丢失&#xff0c;将会直接招致数据库不能再承袭使用&#xff0c;本文将针对一个相关案例举行详尽的讲解。 案例如下&#xff1a; 数据库环境…

LeetCode 390. 消除游戏(类似约瑟夫环,找映射规律)

1. 题目 给定一个从1 到 n 排序的整数列表。 首先&#xff0c;从左到右&#xff0c;从第一个数字开始&#xff0c;每隔一个数字进行删除&#xff0c;直到列表的末尾。 第二步&#xff0c;在剩下的数字中&#xff0c;从右到左&#xff0c;从倒数第一个数字开始&#xff0c;每隔…

四川大学计算机学院挑战杯,“挑战杯”四川大学2018-2019年大学生课外学术科技作品竞赛决赛答辩举行...

3月22日下午&#xff0c;“挑战杯”四川大学2018-2019年大学生课外学术科技作品竞赛决赛答辩在望江基础教学楼A座顺利举行。从校赛报名阶段的263支队伍中脱颖而出的108支团队进行了现场PPT陈述和评委问辨。参赛项目包括科技发明类、自然科学论文类、社会哲学调查报告类作品。评…

Oracl数据库中大数据的备份-2

来源&#xff1a;chinaitlab  1.5.设置装备安装dbstart.sh。 启动数据库$vi /oracle/dbstart.sh #编辑启动剧本  ---------------------------------------------  echo "begin to start oracle..."  lsnrctl start  sqlplus /nolog <   connect /as s…

LeetCode 519. 随机翻转矩阵(哈希)

1. 题目 题中给出一个 n_rows 行 n_cols 列的二维矩阵&#xff0c;且所有值被初始化为 0。 要求编写一个 flip 函数&#xff0c;均匀随机的将矩阵中的 0 变为 1&#xff0c;并返回该值的位置下标 [row_id,col_id]&#xff1b; 同样编写一个 reset 函数&#xff0c;将所有的值都…

厦门大学计算机考研怎么样6,【图片】一战厦大计算机上岸,经验帖。慢更【考研吧】_百度贴吧...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼再写一下我的初试经验。今天晚上有时间再更初试政治&#xff1a;政治切忌开始太早&#xff0c;战线过长&#xff0c;我是从9月开始&#xff0c;跟着肖秀荣的视频课看了一遍精讲精练&#xff0c;做了一遍1000题&#xff0c;一遍真题…

迪士尼手机官方专卖东家京破产

迪士尼手机业务一向都在不时的展开&#xff0c;迪士尼品牌各种周边主题手机掉掉了MM们的喜好。上个月脱手脱手&#xff0c;迪士尼在日本推出了特别版的Android智好手机&#xff0c;并举办了大面积的电视告白推行&#xff0c;昨天迪士尼挪动在东京市中心开放了他们的官方实体专…

如何在计算机课上渗透德育教育初探,在《道德与法治》课中德育渗透的案例初探...

然而现实情况是部分教师在教育教学中往往受到各种因素的影响&#xff0c;常常偏重于教学而轻视了德育教育&#xff0c;有些学生“以分为命根儿”&#xff0c;属于典型的“两耳不闻窗外事一心只读圣贤书”&#xff0c;有些则“顽劣难化”&#xff0c;很明显是道德情操培养的缺失…

通过 .NET Framework 中的 XPath 和 XSLT API 方便地操作 XML 数据

本文假设您熟悉 Visual Basic .NET 下载本文的代码&#xff1a; XPathandXSLT.exe (166KB) 摘要 XPath 是一种正在兴起的通用查询语言。通过 XPath&#xff0c;可以在基于 XML 的数据源中识别和处理一组相关的节点。XPath 提供了一个基础结构&#xff0c;它是 .NET Framewo…