当前位置:网站首页>Leetcode - 990: equations of satisfiability
Leetcode - 990: equations of satisfiability
2022-07-30 09:08:00 【chrysanthemum bat】
题目
给定一个由表示变量之间关系的字符串方程组成的数组,每个字符串方程 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

解题
The concept of check union 来源
方法一:并查集
参考链接
due to equal elements,放到一个集合,So there needs to be multiple collections.
If the equals sign is involved in associating two sets,Then it will also involve the merge operation of the collection.
for unequal elements,The set can be determined,if within a set,就返回false
下图是 Full compression of the tree structure,也就是在findinside the function.
class UnionFind{
private:
vector<int> parent;
public:
UnionFind(){
parent.resize(26);
iota(parent.begin(),parent.end(),0);
}
int find(int index){
//查找根节点
if(index==parent[index]) return index;
parent[index]=find(parent[index]);//The parent node of all association nodes points to the root node of the association
return parent[index];
}
void unite(int index1,int index2){
//关联(Point the parent of the root node of the first variable to the root node of the second variable)
parent[find(index1)]=find(index2);
}
};
class Solution {
public:
bool equationsPossible(vector<string>& equations) {
UnionFind uf;
for(string& s:equations){
if(s[1]=='='){
uf.unite(s[0]-'a',s[3]-'a');
}
}
for(string& s:equations){
if(s[1]=='!'){
if(uf.find(s[0]-'a')==uf.find(s[3]-'a')) return false;
}
}
return true;
}
};
边栏推荐
- ant-design form form verification upload component (with personal packaged upload component)
- typescript7-typescript常用类型
- SQL window function
- HashSet和LinkedHashSet
- Selected as one of the "Top Ten Hard Core Technologies", explaining the technical points of Trusted Confidential Computing (TECC) in detail
- test4
- input标签的tabindex属性 & a标签的tabindex属性
- 一文带你玩转offer-01
- 剖析SGI STL空间配置器(一 、辅助接口函数)
- test111
猜你喜欢
随机推荐
SQL行列转换
SQL的ROUND函数用法及其实例
【Flask框架①】——Flask介绍
How to Assemble a Registry
桌面软件开发框架大赏
基于JSP实现校园二手交易平台
[GAN]老照片修复Bringing Old Photos Back to Life论文总结
剑指offer 48:最长不重复子串
Portable small fan PD power chip
OA项目之待开会议&历史会议&所有会议
电源完整性基础知识
立创EDA——PCB的走线(五)
SQL window function
jdbc ResultSetMetaData获取tableName问题
【零基础玩转BLDC系列】以GD32F30x为例定时器相关功能详解
【Flask框架②】——第一个Flask项目
阿里云国际版云服务器防火墙设置
ES:模板字符串的使用
电源完整性的去耦和层间耦合电容
typescript8 - type annotations









