990. 평등 방정식의 만족 가능성
6554 단어 algorithms
설명
각 문자열 equations
이 길이 equations[i]
이고 두 가지 다른 형태 중 하나를 취하는 변수 간의 관계를 나타내는 스트링 배열 4
이 제공됩니다. "xi==yi"
또는 "xi!=yi"
. 문자 변수 이름.
주어진 방정식을 모두 만족시키기 위해 변수 이름에 정수를 할당할 수 있는 경우 xi
을 반환하고 그렇지 않은 경우 yi
을 반환합니다.
예 1:
Input: equations = ["a==b","b!=a"]
Output: false
Explanation: If we assign say, a = 1 and b = 1, then the first equation is satisfied, but not the second.
There is no way to assign the variables to satisfy both equations.
예 2:
Input: equations = ["b==a","a==b"]
Output: true
Explanation: We could assign a = 1 and b = 1 to satisfy both equations.
제약:
Input: equations = ["a==b","b!=a"]
Output: false
Explanation: If we assign say, a = 1 and b = 1, then the first equation is satisfied, but not the second.
There is no way to assign the variables to satisfy both equations.
Input: equations = ["b==a","a==b"]
Output: true
Explanation: We could assign a = 1 and b = 1 to satisfy both equations.
true
false
1 <= equations.length <= 500
은 소문자입니다. equations[i].length == 4
은 equations[i][0]
또는 equations[i][1]
입니다. '='
은 '!'
입니다. equations[i][2]
은 소문자입니다. 솔루션
솔루션 1
직관
암호
class Solution {
private:
int p[26];
int find(int x) {
if (p[x] != x) p[x] = find(p[x]);
return p[x];
}
public:
bool equationsPossible(vector<string>& equations) {
for (int i = 0; i < 26; i++) {
p[i] = i;
}
for (string& equation : equations) {
int a = equation[0] - 'a', b = equation[3] - 'a';
if (equation[1] == '=') {
p[find(a)] = find(b);
}
}
for (string& equation : equations) {
int a = equation[0] - 'a', b = equation[3] - 'a';
if (equation[1] == '!' && find(a) == find(b)) {
return false;
}
}
return true;
}
};
복잡성
class Solution {
private:
int p[26];
int find(int x) {
if (p[x] != x) p[x] = find(p[x]);
return p[x];
}
public:
bool equationsPossible(vector<string>& equations) {
for (int i = 0; i < 26; i++) {
p[i] = i;
}
for (string& equation : equations) {
int a = equation[0] - 'a', b = equation[3] - 'a';
if (equation[1] == '=') {
p[find(a)] = find(b);
}
}
for (string& equation : equations) {
int a = equation[0] - 'a', b = equation[3] - 'a';
if (equation[1] == '!' && find(a) == find(b)) {
return false;
}
}
return true;
}
};
Reference
이 문제에 관하여(990. 평등 방정식의 만족 가능성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jiangwenqi/990-satisfiability-of-equality-equations-4f2k텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)