栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Leetcode 990. Satisfiability of Equality Equations [Python]

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Leetcode 990. Satisfiability of Equality Equations [Python]

遍历全部的等式,然后union两头的字母,再遍历不等式,然后find两头的字母的parent,如果之前已经union过二者了,证明等式有矛盾。

class UnionFind:
    def __init__(self):
        self.parent = [i for i in range(26)]
    
    def find(self, a):
        if self.parent[a] != a:
            self.parent[a] = self.find(self.parent[a])
        return self.parent[a]
    
    def union(self, a, b):
        pa = self.find(a)
        pb = self.find(b)
        if pa == pb:return True
        if pa != pb:
            self.parent[pb] = pa
        return True


class Solution:
    def equationsPossible(self, equations: List[str]) -> bool:
        equal = []
        notequal = []
        uf = UnionFind()
        for q in equations:
            a,op1,op2,b = q[0], q[1],q[2],q[3]
            if op1 == '=':
                equal.append((a, op1, op2, b))
                uf.union(ord(a) - ord('a'), ord(b) - ord('a'))
            elif op1 == '!':
                notequal.append((a, op1, op2, b))
        
        for a, op1, op2, b in notequal:
            
            pa = uf.find(ord(a) - ord('a'))
            pb = uf.find(ord(b) - ord('a'))
            if pa == pb:return False
        return True
            
        
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/689313.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号