399. 除法求值

news2024/11/25 12:25:39

题目描述:

在这里插入图片描述

主要思路:

本题主要利用并查集的思想,重点是要弄明白分子和分母的指向关系以及一系列的值的变化规则。
查询时如果两个数字不在一个集合里那么结果就为-1.

class Solution {
public:
    unordered_map<string,string> f;
    unordered_map<string,double> num;
    string find(string k)
    {
        if(f[k]==k)
            return k;
        string kk=f[k];
        f[k]=find(f[k]);
        num[k]*=num[kk];
        return f[k];
    }
    vector<double> calcEquation(vector<vector<string>>& equations, vector<double>& values, vector<vector<string>>& queries) {
        int n=equations.size();
        for(int i=0;i<n;++i)
        {
            string a=equations[i][0],b=equations[i][1];
            double x=values[i];
            if(f.find(a)==f.end()&&f.find(b)==f.end())
            {
                f[a] = b;
                f[b] = b;
                num[b] = 1.0;
                num[a] = x;
            }
            else if(f.find(a)==f.end())
            {
                f[a] = b;
                num[a] = x;
            }
            else if(f.find(b)==f.end())
            {
                f[b] = b;
                num[b] = 1.0;
                string ap=find(a);
                f[ap] = b;
                num[ap] = x/num[a];
            }
            else
            {
                string ap=find(a),bp=find(b);
                if(ap==bp)
                    continue;
                f[ap] = f[bp];
                num[ap] = num[b]*x/num[a];
            }
        }
        vector<double> ans;
        for(auto x:queries)
        {
            string a=x[0],b=x[1];
            if(f.find(a)==f.end()||f.find(b)==f.end()||find(a)!=find(b))
                ans.push_back(-1.0);
            else
                ans.push_back(num[a]/num[b]);
        }
        return ans;
    }
};

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

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

相关文章

港联证券|早盘三大指数涨跌不一 医药商业板块涨近3%

周二&#xff08;8月8日&#xff09;&#xff0c;三大指数涨跌纷歧&#xff0c;到上午收盘&#xff0c;上证指数涨0.01%&#xff0c;报3269.29点&#xff1b;深证成指和创业板指别离跌0.06%和0.05%&#xff1b;沪深两市合计成交额5062.22亿元&#xff0c;总体来看&#xff0c;两…

通信行业实操技巧,让你的基站无人能及!

当今社会&#xff0c;通信网络已经成为人们生活和工作中不可或缺的一部分&#xff0c;而电信基站作为这一网络的支撑和枢纽&#xff0c;扮演着至关重要的角色。 因此&#xff0c;精密空调监控在现代通信基站的运维中具有重要意义&#xff0c;为通信技术的发展和进步提供了有力支…

新一代构建工具 maven-mvnd

新一代构建工具 maven-mvnd mvnd的前世今生下载安装 mvndIDEA集成 mvnd的前世今生 maven 作为一代经典的构建工具&#xff0c;流行了很多年&#xff0c;知道现在依然是大部分Java项目的构建工具的首选&#xff1b;但随着项目复杂度提高&#xff0c;代码量及依赖库的增多使得ma…

Vue电商项目--服务器

购买服务器 就是如果想要别人访问我们的项目&#xff0c;那么我们就需要服务器。 我们之前使用node搭建服务器&#xff0c;只能在局域网中访问。 购买云服务器的方式有很多&#xff1a;像阿里云&#xff0c;腾讯云等等 腾讯云 产业智变云启未来 - 腾讯 (tencent.com) 安全…

机器学习鱼书笔记(自用更新)

零、预知识 1.Numpy 使用 介绍&#xff1a;高效的操作多维数组的函数库。 安装&#xff1a;&#xff08;前提已经安装了python&#xff09; pip install numpy导入 import numpy as np创建数组 Numpy最重要的数据结构是多维数组&#xff08;ndarray&#xff09;。通过Numpy&…

关于C++静态代码扫描工具及基于jenkins流水线搭建vs报告分析工具开发的小总结

静态代码扫描&#xff09; 主要内容&#xff1a;Tscancode 报告解析插件使用1.Tscancode linux使用命令介绍2.插件jar包3.tscancode扫描生成的文件4.解析报告插件执行方式与参数说明5.解析后生成报告样式 CPPCHECK报告解析1.cppcheck 代码扫描linux命令2.解析报告插件使用 报告…

ArduPilot开源飞控之Companion Computers简单分析

ArduPilot开源飞控之Companion Computers简单分析 1. 源由2. 伴机系统2.1 APSync2.2 DroneKit2.3 FlytOS2.4 Maverick2.5 ROS2.6 Rpanion-server 3. 总结4. 参考资料 1. 源由 从稳定性&#xff0c;社区群体&#xff0c;以及开源方式的角度看&#xff0c;Ardupilot是不错的选择…

【Vue】使用print.js插件实现打印预览功能,超简单

目录 一、实现效果 二、实现步骤 【1】安装插件 【2】在需要打印的页面导入 【3】在vue文件中需要打印的部分外层套一层div&#xff0c;给div设置id。作为打印的区域 【4】在打印按钮上添加打印事件 【5】在methods中添加点击事件 三、完整代码 一、实现效果 二、实现步…

647. 回文子串

目录 一、题目 二、代码 一、题目 二、代码 双指针&#xff01;&#xff01;&#xff01; class Solution { public:bool Palindrome(string s,int i,int j){int begini;int end j;while(begin<end){if(s[begin]!s[end]){return false;}begin;end--;}return true;}int …

IPWorks S3 Delphi Edition Crack

IPWorks S3 Delphi Edition Crack IPWorksS3使集成基于云的文件存储变得容易。易于使用的组件可用于与任何S3兼容的存储提供商集成&#xff0c;如Amazon S3、Digital Ocean Spaces、Wasabi、Backblaze B2、IBM Cloud Object storage、Oracle Cloud、Linode等。强大的客户端加密…

解决Vue+Element-UI 进行From表单校验时出现了英文提示问题

说明&#xff1a;该篇博客是博主一字一码编写的&#xff0c;实属不易&#xff0c;请尊重原创&#xff0c;谢谢大家&#xff01; 问题描述 在使用form表单时&#xff0c;往往会对表单字段进行校验&#xff0c;字段为必填项时会添加required属性&#xff0c;此时自定义rules规则…

vue中全局状态存储 pinia和vuex对比 pinia比vuex更香 Pinia数据持久化及数据加密

前言 毕竟尤大佬都推荐使用pinia&#xff0c;支持vue2和vue3&#xff01; 如果熟悉vuex&#xff0c;花个把小时把pinia看一下&#xff0c;就不想用vuex了 支持选项式api和组合式api写法pinia没有mutations&#xff0c;只有&#xff1a;state、getters、actionspinia分模块不…

20个程序员接单平台分享

这题我会&#xff01;接单软件那么多&#xff0c;找到适合自己的最重要&#xff01; V2EX https://www.v2ex.com/ 先给一个“非正常选项”&#xff0c;v2ex上有一个“酷工作”板块&#xff0c;运气好的话可以在这里找到不错的单子&#xff0c;最重要的是带你开启新世界的大门…

新型声学攻击通过键盘击键窃取数据,准确率高达 95%

来自英国大学的一组研究人员训练了一种深度学习模型&#xff0c;该模型可利用麦克风记录并分析键盘击键的声音&#xff0c;以此来窃取目标设备中的数据&#xff0c;准确率高达 95%。 不同于其他需要特殊条件并受到数据速率和距离限制的旁道攻击&#xff0c;由于现有大量场景都拥…

LeetCode:Hot100的python版本

94. 二叉树的中序遍历

Python爬虫的Selenium(学习于b站尚硅谷)

目录 一、Selenium  1.为什么要学习Selenium  &#xff08;1&#xff09;什么是Selenium  &#xff08;2&#xff09;为什么使用selenium?  &#xff08;3&#xff09;代码演示 2. selenium的基本使用  &#xff08;1&#xff09;如何安装selenium  &#xff08;2…

jmeter如何压测和存储

一、存储过程准备&#xff1a; 1、建立一个空表&#xff1a; 1 CREATE TABLE test_data ( id NUMBER, name VARCHAR2(50), age NUMBER ); 2、建立一个存储过程&#xff1a; 1 2 3 4 5 6 7 8 9 CREATE OR REPLACE PROCEDURE insert_test_data (n IN NUMBER) AS BEGIN --E…

【工程优化问题】基于多种智能优化算法的压力容器设计问题研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Linux内核应该怎么去学习?

通过阅读源码来学习操作系统要注意区分共性与平台特性。 1. 中断响应是共性&#xff0c;8259 中断控制器和 IDT 是 x86 的特性。 2. 虚拟内存管理是共性&#xff0c;x86 的 GDT 和 LDT 是特性&#xff0c;而且现在的系统也只是走个过场而已。 3. 任务调度与上下文切换是共性&am…

44.实现爱尔兰B公式计算并输出表格(matlab程序)

1.简述 1.话务量定义 话务量指在一特定时间内呼叫次数与每次呼叫平均占用时间的乘积。 话务量反映了电话负荷的大小&#xff0c;与呼叫强度和呼叫保持时间有关。呼叫强度是单位时间内发生的呼叫次数&#xff0c;呼叫保持时间也就是占用时间。 话务量计算方法 话务量公式为…