本文介绍: 输入两个数组equations和values,其中,数组equations的每个元素包含两个表示变量名的字符串,数组values的每个元素是一个浮点数值。如果equations[i]的两个变量名分别是Ai和Bi,那么Ai/Bi=values[i]。再给定一个数组queries,它的每个元素也包含两个变量名。对于queries[j]的两个变量名Cj和Dj,请计算Cj/Dj的结果。假设任意values[i]大于0。如果不能计算,那么返回-1。
题目
输入两个数组equations和values,其中,数组equations的每个元素包含两个表示变量名的字符串,数组values的每个元素是一个浮点数值。如果equations[i]的两个变量名分别是Ai和Bi,那么Ai/Bi=values[i]。再给定一个数组queries,它的每个元素也包含两个变量名。对于queries[j]的两个变量名Cj和Dj,请计算Cj/Dj的结果。假设任意values[i]大于0。如果不能计算,那么返回-1。
例如,输入数组equations为[[“a”,“b”],[“b”,“c”]],数组values为[2.0,3.0],如果数组queries为[[“a”,“c”],[“b”,“a”],[“a”,“e”],[“a”,“a”],[“x”,“x”]],那么对应的计算结果为[6.0,0.5,-1.0,1.0,-1.0]。由数组equations和values可知,a/b=2.0,b/c=3.0,所以,a/c=6.0,b/a=0.5,a/a=1.0。
分析
可以尝试根据数组equations[[“a”,“b”],[“b”,“c”]]和数组values[2.0,3.0]构建对应的图。因为a/b=2.0,所以图中有一条从节点a到节点b的边,权重为2.0。同时由数学常识可知b/a=1/2,所以图中还有一条由节点b指向节点a的权重为1/2的边。类似地,因为b/c=3.0,所以图中有一条由节点b指向节点c的权重为3.0的边,还有一条由节点c指向节点b的权重为1/3的边。
解
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。