leetcode990. 等式方程的可满足性(并查集)
生活随笔
收集整理的這篇文章主要介紹了
leetcode990. 等式方程的可满足性(并查集)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給定一個由表示變量之間關系的字符串方程組成的數組,每個字符串方程 equations[i] 的長度為 4,并采用兩種不同的形式之一:“a==b” 或 “a!=b”。在這里,a 和 b 是小寫字母(不一定不同),表示單字母變量名。
只有當可以將整數分配給變量名,以便滿足所有給定的方程時才返回 true,否則返回 false。
示例 1:
輸入:[“a==b”,“b!=a”]
輸出:false
解釋:如果我們指定,a = 1 且 b = 1,那么可以滿足第一個方程,但無法滿足第二個方程。沒有辦法分配變量同時滿足這兩個方程。
代碼
class Solution {int[] fa;public void init(){for(int i=0;i<fa.length;i++)fa[i]=i;}public int find(int x){if(x!=fa[x])fa[x]=find(fa[x]);return fa[x];}public void union(int x,int y){x=find(x);y=find(y);if(x==y) return;fa[x]=y;}public boolean equationsPossible(String[] equations) {fa=new int[26];init();for(String s:equations)//將相等的數字的湊成一個集合{ if(s.charAt(1)=='!') continue;int fx=find(s.charAt(0)-'a');int fy=find(s.charAt(3)-'a');union(s.charAt(0)-'a',s.charAt(3)-'a');}for(String s:equations)//如果不相等的兩個數字出現在同一個集合中則出現矛盾{if(s.charAt(1)=='=') continue;int fx=find(s.charAt(0)-'a');int fy=find(s.charAt(3)-'a');if(fx==fy) return false;} return true;} }總結
以上是生活随笔為你收集整理的leetcode990. 等式方程的可满足性(并查集)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做梦梦到别人房屋倒塌预示着什么
- 下一篇: leetcode面试题 17.07. 婴