1. 题目

给定一个由表示变量之间关系的字符串方程组成的数组,每个字符串方程 equations[i] 的长度为 4,并采用两种不同的形式之一:"a==b" 或 "a!=b"
在这里,a 和 b 是小写字母(不一定不同),表示单字母变量名。

只有当可以将整数分配给变量名,以便满足所有给定的方程时才返回 true,否则返回 false。

示例 1:
输入:["a==b","b!=a"]
输出:false
解释:如果我们指定,a = 1 且 b = 1,那么可以满足第一个方程,
但无法满足第二个方程。没有办法分配变量同时满足这两个方程。示例 2:
输出:["b==a","a==b"]
输入:true
解释:我们可以指定 a = 1 且 b = 1 以满足满足这两个方程。示例 3:
输入:["a==b","b==c","a==c"]
输出:true示例 4:
输入:["a==b","b!=c","c==a"]
输出:false示例 5:
输入:["c==c","b==d","x!=z"]
输出:true提示:
1 <= equations.length <= 500
equations[i].length == 4
equations[i][0] 和 equations[i][3] 是小写字母
equations[i][1] 要么是 '=',要么是 '!'
equations[i][2] 是 '='

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/satisfiability-of-equality-equations
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

参考:数据结构–并查集(Disjoint-Set)
类似题目:
LeetCode 959. 由斜杠划分区域(并查集)
LeetCode 1202. 交换字符串中的元素(并查集)
LeetCode 1319. 连通网络的操作次数(BFS/DFS/并查集)
程序员面试金典 - 面试题 17.07. 婴儿名字(并查集)

class uni
{int f[26];
public:uni(){for(int i = 0; i < 26; ++i)f[i] = i;}int find(int a){if(f[a] == a)return f[a];return f[a] = find(f[a]);}void merge(int a, int b){int fa = find(a);int fb = find(b);f[fa] = fb;}
};
class Solution {public:bool equationsPossible(vector<string>& equations) {uni u;int a, b, i;for(i = 0; i < equations.size(); ++i){if(equations[i][1]=='='){a = equations[i][0]-'a';b = equations[i][3]-'a';u.merge(a,b);}}for(i = 0; i < equations.size(); ++i){if(equations[i][1]=='!'){a = equations[i][0]-'a';b = equations[i][3]-'a';if(u.find(a) == u.find(b))return false;}}return true;}
};

12 ms 11.2 MB

LeetCode 990. 等式方程的可满足性(并查集)相关推荐

  1. [Leedcode][JAVA][第990题][等式方程的可满足性][并查集]

    [问题描述][中等] 给定一个由表示变量之间关系的字符串方程组成的数组,每个字符串方程 equations[i] 的长度为 4,并采用两种不同的形式之一:"a==b" 或 &quo ...

  2. 990. 等式方程的可满足性

    链接:990. 等式方程的可满足性 题解:https://www.yuque.com/liweiwei1419/algo/gq157y class Solution {public:vector< ...

  3. LeetCode 685. 冗余连接 II(并查集)

    1. 题目 在本问题中,有根树指满足以下条件的有向图.该树只有一个根节点,所有其他节点都是该根节点的后继. 每一个节点只有一个父节点,除了根节点没有父节点. 输入一个有向图,该图由一个有着N个节点 ( ...

  4. leetcode990. 等式方程的可满足性

    leetcode990. 等式方程的可满足性 题目描述 链接: leetcode990. 给定一个由表示变量之间关系的字符串方程组成的数组,每个字符串方程 equations[i] 的长度为 4,并采 ...

  5. LeetCode 737. 句子相似性 II(并查集)

    文章目录 1. 题目 2. 解题 1. 题目 给定两个句子 words1, words2 (每个用字符串数组表示),和一个相似单词对的列表 pairs ,判断是否两个句子是相似的. 例如,当相似单词对 ...

  6. LeetCode 305. 岛屿数量 II(并查集)

    文章目录 1. 题目 2. 解题 2.1 超时解 2.1 改进计算方法 1. 题目 假设你设计一个游戏,用一个 m 行 n 列的 2D 网格来存储你的游戏地图. 起始的时候,每个格子的地形都被默认标记 ...

  7. Leetcode 1436旅行终点站 拓扑排序 并查集与队列

    题目介绍 题目难度: easy 给你一份旅游线路图,该线路图中的旅行线路用数组 paths 表示,其中 paths[i] = [cityAi, cityBi] 表示该线路将会从 cityAi 直接前往 ...

  8. leetcode990. 等式方程的可满足性(并查集)

    给定一个由表示变量之间关系的字符串方程组成的数组,每个字符串方程 equations[i] 的长度为 4,并采用两种不同的形式之一:"a==b" 或 "a!=b" ...

  9. leetcode 839. 相似字符串组(并查集)

    如果交换字符串 X 中的两个不同位置的字母,使得它和字符串 Y 相等,那么称 X 和 Y 两个字符串相似.如果这两个字符串本身是相等的,那它们也是相似的. 例如,"tars" 和 ...

最新文章

  1. 传感器为什么在低量程偏差大_传感器的静态特性
  2. mysql集群安装配置
  3. c语言精炼pdf,发计算机二级C语言多年精炼笔试试卷.pdf
  4. 哈夫曼编码之大根堆小根堆揭西县
  5. linux socket 面试题,面试题
  6. php 错误500排错,如何排查Web服务器HTTP ERROR 500的错误?
  7. Ruby设计模式透析之 —— 策略(Strategy)
  8. java 集合 总结 表_java-集合总结
  9. 第11章 连接查询和分组查询
  10. -rw-r--r--@ what's @
  11. 修改php.ini以达到 屏蔽错误信息
  12. 电脑拖机,win10一台电脑两人用
  13. 系统进化树-原理介绍及软件使用
  14. 快速学会网页中鼠标经过图片放大效果
  15. 文献笔记|Lau, 2021, Nature human behaviour
  16. 普物期末题型总结题解
  17. React中文文档之Rendering Elements
  18. Scala 上下文界定
  19. python基础知识整理13-正则re
  20. getClass().getResourceAsStream()

热门文章

  1. Hbase2.0版本安装教程
  2. 程序员,你还在 Select * 吗?
  3. django入门项目图书管理
  4. 大数据开发你需要知道的十个技术
  5. JS中this的四种用法
  6. Sharepoint学习笔记—习题系列--70-573习题解析 -(Q40-Q44)
  7. [转帖]关于Linux下的icotl函数
  8. DIV Scroll属性
  9. 打印菱形星号组合C程序
  10. 一文让你了解RT-Thread