第一百一十四天:力扣839题,相似字符串组
地址:leetcode-cn.com/problems/si…
思路:并查集
var numSimilarGroups = function(strs) {
const n = strs.length;
const m = strs[0].length;
const f = new Array(n).fill(0).map((element, index) => index);
for (let i = 0; i < n; i++) {
for (let j = i + 1; j < n; j++) {
const fi = find(i), fj = find(j);
if (fi === fj) {
continue;
}
if (check(strs[i], strs[j], m)) {
f[fi] = fj;
}
}
}
let ret = 0;
for (let i = 0; i < n; i++) {
if (f[i] === i) {
ret++;
}
}
return ret;
function find(x) {
return f[x] === x ? x : (f[x] = find(f[x]));
}
function check(a, b, len) {
let num = 0;
for (let i = 0; i < len; i++) {
if (a[i] !== b[i]) {
num++;
if (num > 2) {
return false;
}
}
}
return true;
}
};
执行用时:112 ms, 在所有 JavaScript 提交中击败了62.50%的用户
内存消耗:41.8 MB, 在所有 JavaScript 提交中击败了50.00%的用户