leetcode 399除法求值 超水带权并查集

这篇具有很好参考价值的文章主要介绍了leetcode 399除法求值 超水带权并查集。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

leetcode 399除法求值 超水带权并查集,leetcode,# 图,leetcode,哈希算法,算法
题目文章来源地址https://www.toymoban.com/news/detail-806442.html

class Solution {
public:
    int f[45];
    double multi[45];
    map<string,int>hash;int tot=0;
    int seek(int x){
        if(x==f[x]) return x;
        int fa=f[x];
        f[x]=seek(fa);
        multi[x]*=multi[fa];
        return f[x];
    }
    vector<double> calcEquation(vector<vector<string>>& equations, vector<double>& values, vector<vector<string>>& queries) {
        for(int i=0;i<equations.size();++i){
            vector<string> vec=equations[i];
            if(!hash.count(vec[0])) hash[vec[0]]=++tot,f[tot]=tot,multi[tot]=1.0;
            if(!hash.count(vec[1])) hash[vec[1]]=++tot,f[tot]=tot,multi[tot]=1.0;
        }
        for(int i=0;i<equations.size();++i){
            vector<string> vec=equations[i];
            int x=hash[vec[0]],y=hash[vec[1]];
            int rx=seek(x),ry=seek(y);
            if(rx==ry) continue;
            f[rx]=ry,multi[rx]=values[i]*multi[y]/multi[x];
        }
        vector<double>ans;
        for(int i=0;i<queries.size();++i){
            if(!hash.count(queries[i][0])||!hash.count(queries[i][1])) ans.push_back(-1);
            else{
                int x=hash[queries[i][0]],y=hash[queries[i][1]];
                int rx=seek(x),ry=seek(y);
                if(rx!=ry) ans.push_back(-1);
                else ans.push_back(multi[x]/(multi[y]*multi[rx]));
            }
        }
        return ans;
    }
};

到了这里,关于leetcode 399除法求值 超水带权并查集的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • AcWing 算法基础课二 数据结构 链表 栈 队列 并查集 哈希表

    AcWing 算法基础课二 数据结构 链表 栈 队列 并查集 哈希表

    链表题目:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 AcWing. 826.单链表 双链表 AcWing 827.双链表 AcWing 828.模拟栈 AcWing 3302.表达式求值 AcWing 829. 模拟队列 AcWing 830.单调栈 AcWing 154.滑动窗口 AcWing 831. KMP字符串 AcWing 835. Trie字符串统计 AcWing 143. 最大异或对 AcWing 836.合并集合

    2024年02月15日
    浏览(36)
  • Leetcode:684. 冗余连接(并查集C++)

    Leetcode:684. 冗余连接(并查集C++)

    目录 684. 冗余连接 题目描述: 实现代码与解析: 并查集 原理思路:         树可以看成是一个连通且  无环  的  无向  图。 给定往一棵  n  个节点 (节点值  1~n ) 的树中添加一条边后的图。添加的边的两个顶点包含在  1  到  n  中间,且这条附加的边不属于树中

    2024年02月13日
    浏览(9)
  • 【LeetCode】LeetCode 547. 省份数量(Java版 什么是并查集)

    【LeetCode】LeetCode 547. 省份数量(Java版 什么是并查集)

       📝个人主页:哈__ 期待您的关注  一、题目描述 有  n  个城市,其中一些彼此相连,另一些没有相连。如果城市  a  与城市  b  直接相连,且城市  b  与城市  c  直接相连,那么城市  a  与城市  c  间接相连。 省份  是一组直接或间接相连的城市,组内不含其他没

    2024年04月17日
    浏览(8)
  • LeetCode-200. 岛屿数量【深度优先搜索 广度优先搜索 并查集 数组 矩阵】

    给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。 示例 1: 输入:grid = [ [“1”,“1”,“1”,“

    2024年04月14日
    浏览(10)
  • 【leetcode 力扣刷题】数学题之除法:哈希表解决商的循环节➕快速乘求解商

    【leetcode 力扣刷题】数学题之除法:哈希表解决商的循环节➕快速乘求解商

    题目链接:166. 分数到小数 题目内容: 题目是要我们把一个分数变成一个小数,并以字符串的形式返回。按道理,直接将分子numerator除以分母denominator就得到了小数,转换成string返回就好。题目要求里指出了特殊情况—— 小数部分如果有循环,就把循环节括在括号里 。 那么

    2024年02月10日
    浏览(10)
  • 【蓝桥模板】——如何用7行代码,优雅地拿捏并查集?(并查集模板)

    【蓝桥模板】——如何用7行代码,优雅地拿捏并查集?(并查集模板)

    全文目录🧭 👩‍👩‍👦并查集-亲戚问题 🚀传送锚点​  💡思路点拨 🍞代码详解   👶🏻并查集-蓝桥幼儿园 🚀传送锚点  💡思路点拨 🍞代码详解   🌼并查集-合根植物 🚀传送锚点  💡思路点拨 🍞代码详解    🏰并查集-城邦 🚀传送锚点​​​​​​​  💡思

    2023年04月09日
    浏览(12)
  • 力扣--并查集547.省份数量

    力扣--并查集547.省份数量

    思路分析: 首先定义变量 fa 用于记录并查集,以及城市数量 n 。 定义了并查集的两个函数, find 用于查找节点的根节点, togother 用于合并两个节点所在的集合。 在公共函数 findCircleNum 中,初始化并查集,然后遍历 isConnected 数组,将相连的城市进行合并。 最后使用 visited

    2024年03月26日
    浏览(10)
  • 数据结构--并查集

    数据结构--并查集

    所有元素的全集s 将各个元素划分为若干个互不相交的子集 用一个数组S[ ]即可表示“集合”关系 集合的两个基本操作―— “并” color{red}“并” “ 并 ” 和 “查” color{red}“查” “ 查 ” Find -—“查”操作:确定一个指定元素所属集合 Union --“并”操作:将两个不想交的集

    2024年02月15日
    浏览(10)
  • 【高阶数据结构】——并查集

    【高阶数据结构】——并查集

    在一些应用问题中, 需要将n个不同的元素划分成一些不相交的集合。开始时,每个元素自成一个单元素集合, 然后按一定的规律将归于同一组元素的集合合并 。在此过程中要 反复用到查询某一个元素归属于那个集合的运算 。适合于描述这类问题的抽象数据类型称为 并查集

    2024年02月16日
    浏览(13)
  • 修改数组【并查集】

    修改数组【并查集】

    并查集就是对集合的合并和查询操作的统称。他要求参与运算的两个集合是不相交的(不含有相同的元素)。针对这两个集合可以进行的操作: 1.合并:将两个集合合并成一个集合。 2.查询:查询给定的两个元素是不是在同一个集合中。 每一个并查集都使用一个树来表示,数的

    2024年02月07日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包