当前位置: 首页 > news >正文

力扣399.除法求值

力扣399.除法求值

  • 带权并查集

    • w存每个节点与根节点的比值
    • 带权并查集的路径压缩写法
    • 连接两连通块的写法
  •   class Solution {int p[30];double w[30];public:vector<double> calcEquation(vector<vector<string>>& equations, vector<double>& values, vector<vector<string>>& queries) {int n = equations.size();unordered_map<string,int> mp;//每种字母给一个编号 顺便记录字母总数int s = 0;for(int i=0;i<n;i++){if(mp.find(equations[i][0]) == mp.end())mp[equations[i][0]] = s ++;if(mp.find(equations[i][1]) == mp.end())mp[equations[i][1]] = s ++;}for(int i=0;i<s;i++) p[i] = i , w[i] = 1.0;for(int i=0;i<n;i++){//取出两编号 合并并查集int va = mp[equations[i][0]] ,vb = mp[equations[i][1]];merge(va,vb,values[i]);}vector<double> ans;for(const auto& q:queries){double res = -1.0;if(mp.find(q[0]) != mp.end() && mp.find(q[1]) != mp.end()){int na = mp[q[0]] ,nb = mp[q[1]];int fa = find(na),fb = find(nb);//同一个并查集 有关系if(fa == fb)res = w[na]/w[nb];}ans.emplace_back(res);}return ans;}int find(int x){if(p[x] != x) {int f = find(p[x]);//需要路径压缩时,w[x]存在是到父节点的值而不是根节点w[x] = w[x] * w[p[x]];p[x] = f;}return p[x];}void merge(int x,int y,double val){// 合并集合int fx = find(x) , fy = find(y) ;p[fx] = fy ;//v[x]/v[y] = k, w[fx] = k * w[y]/w[x];w[fx] = val * 1.0 * w[y] / w[x] ;   }};
    

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Python 日志处理分析简介
  • AD交互式布局以及快捷键的设置
  • 内网穿透原理,免费内网穿透(简单使用),公网主动访问内网。
  • 【Python机器学习】利用AdaBoost元算法提高分类性能——在数据集上应用AdaBoost
  • 【EI会议征稿通知】第六届光电科学与材料国际学术会议 (ICOSM 2024)
  • Unity补完计划 之Tilemap
  • 白骑士的Matlab教学基础篇 1.2 MATLAB基础语法
  • 常见VPS服务器附加组件一览
  • 牛客JS题(二十五)Symbol
  • 【OpenCV C++20 学习笔记】给图片加边框-copyMakeBorder
  • Flink开发语言使用java还是Scala合适
  • C#中的Hangfire和Quartz.NET 任务调度的区别
  • Android 13修改蓝牙默认名称
  • 【计算机网络】[第二章][自用]
  • vue动态规则
  • @angular/forms 源码解析之双向绑定
  • 【node学习】协程
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • co.js - 让异步代码同步化
  • Date型的使用
  • github指令
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • JavaScript创建对象的四种方式
  • js操作时间(持续更新)
  • Js基础知识(一) - 变量
  • JS专题之继承
  • Node项目之评分系统(二)- 数据库设计
  • oldjun 检测网站的经验
  • PHP 小技巧
  • Service Worker
  • SpiderData 2019年2月25日 DApp数据排行榜
  • tensorflow学习笔记3——MNIST应用篇
  • Web设计流程优化:网页效果图设计新思路
  • WePY 在小程序性能调优上做出的探究
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 用jquery写贪吃蛇
  • Java性能优化之JVM GC(垃圾回收机制)
  • 阿里云服务器购买完整流程
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • # 数仓建模:如何构建主题宽表模型?
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (二十四)Flask之flask-session组件
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (转)Linux下编译安装log4cxx
  • *** 2003
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .net MVC中使用angularJs刷新页面数据列表
  • [.NET]桃源网络硬盘 v7.4
  • []sim300 GPRS数据收发程序