题目链接

将所有等式关系转化为同一变量的倍数。

class Solution {public:vector<double> calcEquation(vector<vector<string>>& equations, vector<double>& values, vector<vector<string>>& queries) {int n = equations.size(), q = queries.size();vector<double> ret, fa(n*2), weight(n*2, 1.0);for (int i = 0; i < n*2; ++i) {fa[i] = i;}map<string, int> num;int now = 0;for (int i = 0; i < n; ++i) {if (num.find(equations[i][0]) == num.end()) {num[equations[i][0]] = now++;}if (num.find(equations[i][1]) == num.end()) {num[equations[i][1]] = now++;}int x = num[equations[i][0]];int y = num[equations[i][1]];int fx = find(fa, weight, x);int fy = find(fa, weight, y);fa[fx] = fy;weight[fx] = weight[y] / weight[x] * values[i];}for (int i = 0; i < q; ++i) {if (num.find(queries[i][0]) == num.end() || num.find(queries[i][1]) == num.end()) {ret.push_back(-1);continue;}int x = num[queries[i][0]];int y = num[queries[i][1]];int fx = find(fa, weight, x);int fy = find(fa, weight, y);if (fx != fy) {ret.push_back(-1);}else {ret.push_back(weight[x] / weight[y]);}}return ret;}int find(vector<double> &fa, vector<double> &weight, int x) {if (fa[x] != x) {int rt = find(fa, weight, fa[x]);weight[x] *= weight[fa[x]];fa[x] = rt;}return fa[x];}
};

并查集 - 除法求值相关推荐

  1. 【每日一题】除法求值

    文章目录 题目描述 题解 题目描述 399. 除法求值 给你一个变量对数组 equations 和一个实数值数组 values 作为已知条件,其中 equations[i] = [Ai, Bi] 和 ...

  2. LeetCode 399 除法求值 题解

    LeetCode 399 除法求值 题解 给你一个变量对数组 equations 和一个实数值数组 values 作为已知条件,其中 equations[i] = [Ai, Bi] 和 values[ ...

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

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

  4. leetcode_399. 除法求值

    目录 一.题目内容 二.解题思路 三.代码 一.题目内容 给你一个变量对数组 equations 和一个实数值数组 values 作为已知条件,其中 equations[i] = [Ai, Bi] 和 ...

  5. leetcode 399. Evaluate Division | 399. 除法求值(图的邻接表,DFS)

    题目 https://leetcode.com/problems/evaluate-division/ 题解 题目看着复杂,实际上是图的 DFS. 例如,已知 a/b, b/c, c/d,想求 a/d ...

  6. leetcode 399. 除法求值(bfs)

    给你一个变量对数组 equations 和一个实数值数组 values 作为已知条件,其中 equations[i] = [Ai, Bi] 和 values[i] 共同表示等式 Ai / Bi = v ...

  7. 【LeetCode笔记】399. 除法求值(Java、图)

    文章目录 题目描述 思路 && 代码 题目描述 第二道图题,大概是hot100里唯二的图题了.. 思路 && 代码 邻接矩阵存储,g[i][j] 代表 i / j 的值 ...

  8. python和c语言的对比_类C语言与Python负数除法求值间的差异

    一直用Python做计算器用(有点大材小用了啊,呵呵).今天使用时,却发现一个诡异的现象,在C语言入门经典(第4版)说正负数除数取余操作的差别,就在Python上试验了一下,结果结成了完全不一样.下面 ...

  9. 并查集(Union-Find)

    并查集(Union-Find) 并查集(Union-Find) 1.初始化 2.查询 3.合并 4.平衡性优化,扁平化 5.按秩合并 6.路径压缩 7.代码 常用模板 [★ 547. 省份数量](ht ...

最新文章

  1. TensorFlow基础10-(误差反向传播算法以及实现多层神经网络)
  2. 以太主义的创始人维塔利克·布特林(Vitalik嫩模 Butlin)被称为“V神”
  3. Effective C#:避免使用ICloneable接口
  4. 代言男科、站台微商、变身神棍....这些科学家被捧了几十年,黑历史曝光后,让人三观尽毁......
  5. 频段表_5G频段范围之:频段3.3GHz-4.2GHz (n77,n78)
  6. Python爬虫:该如何学习数据爬虫
  7. Intel 64/x86_64/IA-32/x86处理器 - 锁原子操作(2) - 总线封锁/缓存封锁
  8. mac下Python2运行SparkSQL
  9. javacript IO
  10. 王思聪吃热狗表情包怎么制作
  11. 黑客帝国中比较酷炫的代码雨的实现
  12. 喜提JDK的BUG一枚!多线程的情况下请谨慎使用这个类的stream遍历。
  13. 如何在Excel中快速调整列宽
  14. Heat Map在生物信息学中的应用
  15. 移动视频录传-公网对讲APP-MCP常见操作说明
  16. Python基础01 Hello World!
  17. 查询和01号的同学学习的课程完全相同的其他同学的信息的优化
  18. onvif python 音视频_python3控制基于onvif的安防摄像头
  19. org.hibernate.QueryException: Unmatched braces for alias path 解决方案
  20. PYNQ-Z2上手笔记之系统安装

热门文章

  1. Unity3D学习(七):Unity多重采样抗锯齿设置无效的解决办法
  2. Linux下使用NTFS格式移动硬盘
  3. VS 2015 开发Android底部导航条----[实例代码,多图]
  4. 软件工程---团队作业四
  5. 屏蔽Xcode 8“烦人”的日志输出
  6. Tomcat 7 DBCP 配置(MySQL)
  7. 手机计算机快速切换功能,新功能!手势导航快速切换应用功能上线~
  8. java 检查bytebuf长度_Java学习笔记16-Netty缓冲区ByteBuf详解
  9. hystrix 单独使用_Spring cloud微服务架构-Hystrix工作原理(微服务故障熔断)
  10. 【数据结构与算法】之深入解析“有效的括号”的求解思路与算法示例