leetcode990. 等式方程的可满足性
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. 等式方程的可满足性相关推荐
- leetcode990. 等式方程的可满足性(并查集)
给定一个由表示变量之间关系的字符串方程组成的数组,每个字符串方程 equations[i] 的长度为 4,并采用两种不同的形式之一:"a==b" 或 "a!=b" ...
- 990. 等式方程的可满足性
链接:990. 等式方程的可满足性 题解:https://www.yuque.com/liweiwei1419/algo/gq157y class Solution {public:vector< ...
- [Leedcode][JAVA][第990题][等式方程的可满足性][并查集]
[问题描述][中等] 给定一个由表示变量之间关系的字符串方程组成的数组,每个字符串方程 equations[i] 的长度为 4,并采用两种不同的形式之一:"a==b" 或 &quo ...
- LeetCode 990. 等式方程的可满足性(并查集)
1. 题目 给定一个由表示变量之间关系的字符串方程组成的数组,每个字符串方程 equations[i] 的长度为 4,并采用两种不同的形式之一:"a==b" 或 "a!= ...
- 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:这是我的 ...
- 高级数据结构与算法 | 并查集(Union-Find)
文章目录 并查集的原理 并查集的实现 例题 并查集的原理 在一些应用问题中,需要将n个不同的元素划分成一些不相交的集合.开始时,每个元素自成一个 单元素集合,然后按一定的规律将归于同一组元素的集合合并 ...
- 并查集c++代码_[Leetcode 每日精选](本周主题-并查集) 547. 朋友圈
题目难度: 中等 原题链接 今天继续来做并查集的问题, 这道题仍然比较基础, 而且也是个比较接近现实的问题了. 大家在我的公众号"每日精选算法题"中的聊天框中回复 并查集 就能看到 ...
- 经典算法题:字典树、并查集、单调栈、二分、带标记函数dp、树、全排列、字符串问题等常用算法
0. Tips 1. 位运算 如何枚举一个二进制状态数字k的子集, 方法就是针对中的二进制为1的位开始进行减法,判断数字k的二进制子集, 像枚举(2^k-1) ~ 0一样枚举其子集: int sub ...
- LeetCode 1697. 检查边长度限制的路径是否存在(排序+并查集)
文章目录 1. 题目 2. 解题 1. 题目 给你一个 n 个点组成的无向图边集 edgeList ,其中 edgeList[i] = [ui, vi, disi] 表示点 ui 和点 vi 之间有一 ...
最新文章
- 买得嗨更要聊得嗨 阿里通免费电话惠战双11
- 使用mod_proxy_balancer实现负载均衡
- 互联网人不敢生孩子:加班多、想跳槽、怕被边缘化
- android tv如何适配不同的平台
- 倒序排序_排序算法(六):Counting Sort 计数排序
- 面试:史上最全多线程面试题 - (锁内存模型线程)
- python遍历目录压缩文件夹_Python实现多级目录压缩与解压文件的方法
- CH - 6803 导弹防御塔(二分图最大匹配-多重匹配(拆点法))
- Docker Hello World容器运行报错的解决办法
- Bootstrap 3: 菜单居中 Center content in responsive bootstrap navbar
- CCPC-Wannafly Winter Camp Day3 (Div2, onsite) I 石头剪刀布(按秩合并并查集)
- position 属性和 z-index 属性对页面节点层级影响的例子
- 微信小程序点餐页面实现完整版
- 电脑键盘功能基础知识大全分享
- Pom文件配置参数详解
- 爬虫内容保存到txt文件
- android 获得屏幕方向,Android 获取设置屏幕横竖屏
- 指数爆炸问题的基本思路
- 路飞项目整体流程(二)
- 为什么不要把鸡蛋放在同一个篮子里?
热门文章
- jQuery1.4 API 中文版手册(chm格式)
- 基于IDEA搭建JavaWeb入门项目结构(2021版)
- STL(三)——next_permutation()
- HDOJ 2030-汉字统计
- jmeter安装包双击没反应_Jmeter5.0源码在eclipse运行的正确打开方式
- OpenJudge——0003:jubeeeeeat
- 在PS中如何进行图文互排,且层的使用……
- ubuntu16.04升级 vim 8.0
- Java输出特定时间段特定格式时间信息
- 【Next Permutation】cpp