Evaluate Division
来源:互联网 发布:新西兰淘宝 编辑:程序博客网 时间:2024/05/29 02:19
Equations are given in the format A / B = k
, where A
and B
are variables represented as strings, and k
is a real number (floating point number). Given some queries, return the answers. If the answer does not exist, return -1.0
.
Example:
Given a / b = 2.0, b / c = 3.0.
queries are: a / c = ?, b / a = ?, a / e = ?, a / a = ?, x / x = ? .
return [6.0, 0.5, -1.0, 1.0, -1.0 ].
The input is: vector<pair<string, string>> equations, vector<double>& values, vector<pair<string, string>> queries
, where equations.size() == values.size()
, and the values are positive. This represents the equations. Return vector<double>
.
According to the example above:
equations = [ ["a", "b"], ["b", "c"] ],values = [2.0, 3.0],queries = [ ["a", "c"], ["b", "a"], ["a", "e"], ["a", "a"], ["x", "x"] ].
The input is always valid. You may assume that evaluating the queries will result in no division by zero and there is no contradiction.
写了逻辑错误的代码,下次 别犯这种错误:
import java.util.HashMap;//这个逻辑不是对的 要用搜索的方式public class Solution { public double[] calcEquation(String[][] equations, double[] values, String[][] queries) { HashMap<String,Integer> map=new HashMap<String,Integer>(); int index=0; for(int i=0;i<equations.length;i++){ if(!map.containsKey(equations[i][0])) map.put(equations[i][0],index++); if(!map.containsKey(equations[i][1])) map.put(equations[i][1],index++); } double[][] graph=new double[index][index]; for(int i=0;i<graph.length;i++){ for(int j=0;j<graph[0].length;j++){ if(i!=j)graph[i][j]=-1.0; else graph[i][j]=1; } } for(int i=0;i<equations.length;i++){ int x=map.get(equations[i][0]); int y=map.get(equations[i][1]); graph[x][y]=values[i]; graph[y][x]=1/values[i]; for(int j=0;j<graph[0].length;j++){ if(graph[j][x]!=-1.0) { graph[j][y]=graph[j][x]*graph[x][y]; graph[y][j]=1/graph[j][y]; } if(graph[j][y]!=-1.0){ graph[j][x]=graph[j][y]*graph[y][x]; graph[x][j]=1/graph[j][x]; } } } double[] re=new double[queries.length]; for(int i=0;i<queries.length;i++){ Integer x=map.get(queries[i][0]); Integer y=map.get(queries[i][1]); if(x==null||y==null) re[i]=-1.0; else re[i]=graph[x][y]; } return re; }}ac代码:
public class Solution2 { public double[] calcEquation(String[][] equations, double[] values, String[][] queries) { HashMap<String,Integer> map=new HashMap<String,Integer>(); int index=0; for(int i=0;i<equations.length;i++){ if(!map.containsKey(equations[i][0])) map.put(equations[i][0],index++); if(!map.containsKey(equations[i][1])) map.put(equations[i][1],index++); } graph=new double[index][index]; for(int i=0;i<graph.length;i++){ for(int j=0;j<graph[0].length;j++){ if(i!=j)graph[i][j]=-1.0; else graph[i][j]=1; } } for(int i=0;i<equations.length;i++){ int x=map.get(equations[i][0]); int y=map.get(equations[i][1]); graph[x][y]=values[i]; graph[y][x]=1/values[i]; } double[] re=new double[queries.length]; for(int i=0;i<queries.length;i++){ Integer x=map.get(queries[i][0]); Integer y=map.get(queries[i][1]); if(x==null||y==null) re[i]=-1.0; else{ boolean[] flag=new boolean[graph.length]; flag[x]=true; re[i]=dfs(x,y,flag); } } return re; } double[][] graph; public double dfs(int s,int t,boolean[] flag){ if(graph[s][t]!=-1.0) return graph[s][t]; double re=-1.0d; for(int i=0;i<graph.length;i++){ if(flag[i]) continue; flag[i]=true; if(graph[s][i]!=-1.0){ double temp=dfs(i,t,flag); if(temp!=-1.0) re=graph[s][i]*temp; if(re!=-1.0) return graph[s][t]=re; } flag[i]=false; } return graph[s][t]=re; }}
- Evaluate Division
- Evaluate Division
- Evaluate Division
- Evaluate Division
- Evaluate Division
- Evaluate Division
- Evaluate Division
- Evaluate Division
- Evaluate Division
- Evaluate Division
- Evaluate Division
- 【Leetcode】399. Evaluate Division
- [leetcode]399. Evaluate Division
- 399. Evaluate Division
- leetcode:399. Evaluate Division
- [Leetcode 399]Evaluate Division
- 399. Evaluate Division
- LeetCode 399. Evaluate Division
- vue.js Missing space before function parentheses
- 第二章 物理层
- 我的游戏史
- 百度云管家限速破解新神器完美解决百度云盘限速问题
- scala 泛型基础 (二)
- Evaluate Division
- 又迷上了一款新游戏,我是这样走出来的。
- (一)整合spring cloud云服务架构
- haproxy、lvs、nginx 负载均衡的比较和分析
- FreeRTOS任务调度器开启
- 聊一聊深度学习的activation function
- 分时段MFP
- 软件调试技巧
- C/C++:CV限定的理解