leetcode990. 等式方程的可满足性

题目描述

链接: leetcode990.

给定一个由表示变量之间关系的字符串方程组成的数组,每个字符串方程 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

题解

使用并查集来解答:

  • 初始化并查集,大小为26
  • 遍历数组,若符号为 == ,则表示该两个字母连通,使用union方法连接,形成连通分量
  • 再次遍历数组,对于符号为 != 的方程式,判断左右两边的变量是否连通,若连通,则产生矛盾,直接返回false
    其中并查集算法可见: 并查集算法.
    public boolean equationsPossible(String[] equations) {UnionFind unionFind = new UnionFind(26);for (String str : equations) {if (str.contains("==")) {char x = str.charAt(0);char y = str.charAt(3);unionFind.union(x - 'a', y - 'a');}}for (String str : equations) {if (str.contains("!=")) {char x = str.charAt(0);char y = str.charAt(3);if (unionFind.connected(x - 'a', y - 'a')) {return false;}}}return true;}

leetcode990. 等式方程的可满足性相关推荐

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

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

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

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

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

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

  4. LeetCode 990. 等式方程的可满足性(并查集)

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

  5. matlab等式操作,matlab处理一个等式方程,急用,谢谢

    再次麻烦了 我的问题是: f=-v/2*sqrt(pi)*quad(t^(z^2-1/2)*(1+2*z^2*log(t))*exp(-v^2*z^2*t^(2*z^2)),t,0,1)=0:这是我的 ...

  6. 高级数据结构与算法 | 并查集(Union-Find)

    文章目录 并查集的原理 并查集的实现 例题 并查集的原理 在一些应用问题中,需要将n个不同的元素划分成一些不相交的集合.开始时,每个元素自成一个 单元素集合,然后按一定的规律将归于同一组元素的集合合并 ...

  7. 并查集c++代码_[Leetcode 每日精选](本周主题-并查集) 547. 朋友圈

    题目难度: 中等 原题链接 今天继续来做并查集的问题, 这道题仍然比较基础, 而且也是个比较接近现实的问题了. 大家在我的公众号"每日精选算法题"中的聊天框中回复 并查集 就能看到 ...

  8. 经典算法题:字典树、并查集、单调栈、二分、带标记函数dp、树、全排列、字符串问题等常用算法

    0. Tips 1. 位运算 如何枚举一个二进制状态数字k的子集, 方法就是针对中的二进制为1的位开始进行减法,判断数字k的二进制子集, 像枚举(2^k-1) ~ 0一样枚举其子集: int sub ...

  9. LeetCode 1697. 检查边长度限制的路径是否存在(排序+并查集)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个 n 个点组成的无向图边集 edgeList ,其中 edgeList[i] = [ui, vi, disi] 表示点 ui 和点 vi 之间有一 ...

最新文章

  1. 买得嗨更要聊得嗨 阿里通免费电话惠战双11
  2. 使用mod_proxy_balancer实现负载均衡
  3. 互联网人不敢生孩子:加班多、想跳槽、怕被边缘化
  4. android tv如何适配不同的平台
  5. 倒序排序_排序算法(六):Counting Sort 计数排序
  6. 面试:史上最全多线程面试题 - (锁内存模型线程)
  7. python遍历目录压缩文件夹_Python实现多级目录压缩与解压文件的方法
  8. CH - 6803 导弹防御塔(二分图最大匹配-多重匹配(拆点法))
  9. Docker Hello World容器运行报错的解决办法
  10. Bootstrap 3: 菜单居中 Center content in responsive bootstrap navbar
  11. CCPC-Wannafly Winter Camp Day3 (Div2, onsite) I 石头剪刀布(按秩合并并查集)
  12. position 属性和 z-index 属性对页面节点层级影响的例子
  13. 微信小程序点餐页面实现完整版
  14. 电脑键盘功能基础知识大全分享
  15. Pom文件配置参数详解
  16. 爬虫内容保存到txt文件
  17. android 获得屏幕方向,Android 获取设置屏幕横竖屏
  18. 指数爆炸问题的基本思路
  19. 路飞项目整体流程(二)
  20. 为什么不要把鸡蛋放在同一个篮子里?

热门文章

  1. jQuery1.4 API 中文版手册(chm格式)
  2. 基于IDEA搭建JavaWeb入门项目结构(2021版)
  3. STL(三)——next_permutation()
  4. HDOJ 2030-汉字统计
  5. jmeter安装包双击没反应_Jmeter5.0源码在eclipse运行的正确打开方式
  6. OpenJudge——0003:jubeeeeeat
  7. 在PS中如何进行图文互排,且层的使用……
  8. ubuntu16.04升级 vim 8.0
  9. Java输出特定时间段特定格式时间信息
  10. 【Next Permutation】cpp