小美拿到了一个长度为 n 的字符串,她希望将字符串从左到右平铺成一个矩阵(先平铺第一行,然后是第二行,以此类推,矩阵有 x 行 y 列,必须保证 x*y=n ,即每 y 个字符换行,共 x 行)。 该矩阵的权值定义为这个矩阵的连通块数量。小美希望最终矩阵的权值尽可能小,你能帮小美求出这个最小权值吗? 注:我们定义,上下左右四个方向相邻的相同字符是连通的。
第一行输入一个正整数 n ,代表字符串的长度。 第二行输入一个长度为 n 的、仅由小写字母组成的字符串。 1≤ n ≤ 10^4
输出一个整数表示最小权值。
9 aababbabb
2
考点:并查集
数据规模 n ≤ 1e4 | 限制 1 秒 / 256MB | 标准输入输出
参考方向:并查集
用「代表元」高效维护集合合并与连通性查询,均摊近 O(1)。
思路框架(并查集 通法 · 非本题专属)
实现要点:路径压缩 + 按大小合并,复杂度近似 O(α(n))。
复杂度:时间 O(n α(n)) | 空间 O(n)
该范式的通法易错点
对照本题
本题在源数据中没有官方考点标签,方向由题面特征推断,仅供参考。
样例 1:输入 9 / aababbabb → 输出 2
平铺为3*3的矩阵:
aab
abb
abb
共有2个连通块,4个a和5个b。
解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2023年美团秋招编程岗第一批笔试。