news 2026/4/20 16:57:19

千问 LeetCode 1632.矩阵转换后的排名 public int[][] matrixRankTransform(int[][] matrix)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
千问 LeetCode 1632.矩阵转换后的排名 public int[][] matrixRankTransform(int[][] matrix)

这道题是 LeetCode 中难度较高的题目,考察了排序、贪心算法以及并查集的综合应用。

🧐 题目解析

核心目标是为矩阵中的每个元素分配一个“秩”(rank),秩从 1 开始,且需要满足以下规则:
1. 保序性:在同一行或同一列中,如果元素 p > valueToPositions = new TreeMap();
for (int i = 0; i new ArrayList()).add(new int[]{i, j});
}
}

// 记录每行和每列当前的最大秩
int[] rowMaxRank = new int[m];
int[] colMaxRank = new int[n];

int[][] result = new int[m][n];

// 并查集,大小为 m + n,前 m 个代表行,后 n 个代表列
UnionFind uf = new UnionFind(m + n);

// 2. 按值从小到大处理
for (List positions : valueToPositions.values()) {
// 3. 将当前值的所有位置通过并查集连接起来
// 如果一个元素在 (r, c),就将行 r 和列 c+m 连接
for (int[] pos : positions) {
uf.union(pos[0], pos[1] + m);
}

// 用于存储每个连通分量的根节点到该分量内所有位置的映射
Map> components = new HashMap();
for (int[] pos : positions) {
int root = uf.find(pos[0]); // 行节点的根可以代表整个连通分量
components.computeIfAbsent(root, k -> new ArrayList()).add(pos);
}

// 4 & 5. 对每个连通分量计算秩并更新结果
for (List component : components.values()) {
// 找出该连通分量中所有位置对应的行和列的最大秩
int maxRank = 0;
for (int[] pos : component) {
int r = pos[0];
int c = pos[1];
maxRank = Math.max(maxRank, Math.max(rowMaxRank[r], colMaxRank[c]));
}

// 该连通分量所有元素的秩为 maxRank + 1
int finalRank = maxRank + 1;
for (int[] pos : component) {
int r = pos[0];
int c = pos[1];
result[r][c] = finalRank;
// 更新行和列的最大秩
rowMaxRank[r] = finalRank;
colMaxRank[c] = finalRank;
}
}

// 处理完当前值后,重置并查集,为下一批值做准备
for (int[] pos : positions) {
uf.reset(pos[0]);
uf.reset(pos[1] + m);
}
}

return result;
}
}

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/20 16:57:16

从.NET 6到.NET 9:C# 14原生AOT如何让Dify客户端通过工信部信创适配认证?含麒麟V10+飞腾D2000+达梦V8全栈兼容清单(仅限首批200家ISV申领)

第一章:C# 14原生AOT部署Dify客户端的企业级适配战略全景C# 14 原生 AOT(Ahead-of-Time)编译能力与 Dify 开源 LLM 应用平台的深度集成,正成为企业构建轻量、安全、可审计 AI 客户端的关键路径。区别于传统 JIT 部署模式&#xff…

作者头像 李华
网站建设 2026/4/20 16:57:14

PCIe SR-IOV与虚拟化:单根I/O虚拟化深度解析

摘要:SR-IOV(Single Root I/O Virtualization)是PCIe规范定义的硬件级虚拟化技术,允许单个物理设备(PF)虚拟出多个虚拟功能(VF),每个VF可独立分配给不同虚拟机。本文从SR-IOV架构出发,详解PF/VF的关系、VF的资源分配机制、Migration与Live Migration的实现挑战,以及…

作者头像 李华
网站建设 2026/4/20 16:56:19

从单机到集群:手把手教你用Docker Compose快速部署Hadoop 3.1.3伪分布式环境

从单机到集群:手把手教你用Docker Compose快速部署Hadoop 3.1.3伪分布式环境 在数据爆炸的时代,Hadoop作为大数据处理的基石框架,其学习价值不言而喻。但传统基于虚拟机的部署方式往往让初学者望而却步——繁琐的环境配置、高昂的资源占用、…

作者头像 李华
网站建设 2026/4/20 16:55:16

5步彻底解决:如何快速修复FanControl传感器检测异常问题

5步彻底解决:如何快速修复FanControl传感器检测异常问题 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/…

作者头像 李华