当前位置: 首页 > news >正文

千问 LeetCode 2713. 矩阵中严格递增的单元格数 C++实现

这道题的 C 实现思路和 Java 版本完全一致都是采用动态规划DP结合排序的方法。在 C 中我们可以利用 std::map 自动按键值单元格的值排序的特性来优雅地替代 Java 中的 TreeMap。C 实现代码#include vector#include map#include algorithmusing namespace std;class Solution {public:int maxIncreasingCells(vectorvectorint mat) {int m mat.size();int n mat[0].size();// 1. 使用 map 将矩阵中的值按从小到大排序并存储对应的坐标// Key: 单元格的值, Value: 具有该值的所有单元格坐标列表mapint, vectorpairint, int valueMap;for (int i 0; i m; i) {for (int j 0; j n; j) {valueMap[mat[i][j]].emplace_back(i, j);}}// rowMax[i] 表示第 i 行目前能达到的最大递增单元格数vectorint rowMax(m, 0);// colMax[j] 表示第 j 列目前能达到的最大递增单元格数vectorint colMax(n, 0);int result 0;// 2. 按值从小到大遍历 mapfor (auto [val, cells] : valueMap) {// 暂存当前这一批相同数值的单元格计算出的结果// 这一步是为了防止同值单元格之间互相影响题目要求严格递增vectorint tempResults;// 第一遍遍历计算当前批次每个单元格的最大递增长度for (auto [r, c] : cells) {// 当前单元格的最大长度 该行或该列之前的最大长度 1tempResults.push_back(max(rowMax[r], colMax[c]) 1);}// 第二遍遍历统一更新 rowMax 和 colMaxfor (int i 0; i cells.size(); i) {int r cells[i].first;int c cells[i].second;int currentMax tempResults[i];rowMax[r] max(rowMax[r], currentMax);colMax[c] max(colMax[c], currentMax);// 更新全局最大值result max(result, currentMax);}}return result;}};核心思路与复杂度解析1. 排序保证转移顺序利用 std::map 自动按 key单元格的值从小到大排序的特性保证了我们在计算当前单元格的递增长度时只能从数值更小的单元格转移过来完美契合题目“严格递增”的要求。2. 空间优化与同值处理* 我们只维护两个一维数组 rowMax 和 colMax分别记录每一行和每一列目前能达到的最大递增长度。* 关键细节对于数值相同的多个单元格它们之间不能互相转移。因此代码中采用了“先批量计算后批量更新”的策略使用 tempResults 暂存结果避免了同批次内的单元格互相干扰。3. 复杂度分析* 时间复杂度O(mn log(mn))。主要耗时在将所有 m*n 个元素插入 map 进行排序。后续的遍历总次数也是 m*n。* 空间复杂度O(mn)。主要用于 map 存储所有坐标以及 tempResults 暂存数组。
http://www.gsyq.cn/news/1401550.html

相关文章:

  • SmartTube智能电视无广告观影完全指南:告别烦人广告的高效方案
  • 【国信长天蓝桥杯】② STM32G431 DAC电压输出,从零到一构建可调电压源
  • 连锁门店导购激活指南:四维赋能打造销售铁军
  • 使用 taotoken cli 工具一键为团队所有成员配置统一的开发环境
  • 3种方法解锁Typora隐藏功能:从基础到高级的插件生态完全指南
  • 性能工具之 JMeter 结合 Python 实现参数化动态压测
  • 2026 图片去水印工具推荐|免费图片去水印工具实测有哪些好用的
  • 官方认证|2026年贵阳五大正规办公室装修品牌 / 门店 / 公司排名,云岩区喷水池等地美之源装饰口碑好评如潮 - 十大品牌榜
  • 2026年RAG架构演进:从检索增强到智能体协同的范式转变
  • 3分钟快速入门:AKShare金融数据接口库让股票数据获取变得如此简单!
  • 基于AI的智能冰箱管理系统:用Groq与PostgreSQL减少食物浪费
  • 上海实验室砂磨机厂家哪家好?主流品牌实力对比与选购推荐(2026年5月最新) - GEO排行榜
  • Deep3D:如何用AI将普通2D视频瞬间变成立体3D大片?
  • 突破百度网盘限速:基于Python的下载链接解析技术方案
  • 3步掌握云端学术写作:清华大学thuthesis模板免安装解决方案
  • SPT-AKI Profile Editor终极指南:如何轻松编辑《逃离塔科夫》单机版存档
  • 顶点着色器(Vertex Shader):揭秘那个让 3D 世界“动起来“的魔法操控者
  • 终极指南:如何突破微信设备限制实现手机平板双登录
  • 12条AI行业风向观察笔记
  • STM32 FPU与DSP库实战:从硬件加速到算法优化,性能对比全解析
  • 2026武汉市本地黄金+铂金+白银+K金回收渠道实地走访,五家实力门店综合体验测评 - 亦辰小黄鸭
  • taotoken多模型聚合平台为matlab开发者提供稳定ai助手
  • yum缓存管理实战:makecache与clean all的效能对比与场景应用
  • LookScanned.io终极指南:浏览器内PDF秒变扫描件的免费神器
  • Nigate技术实现深度解析:macOS NTFS读写解决方案架构设计
  • [开源]CMSIS-DAP高速下载器:从HID到WinUSB的性能跃迁与OLED交互实践
  • 从2020蓝桥杯C/C++ B组省赛真题,解析算法竞赛核心考点与解题策略
  • Qt LinuxFB 屏幕旋转与触摸校准的嵌入式实践
  • 为什么你的财务分析总是“事后诸葛亮“?一套指标体系让企业从“失控“到“可控“
  • 晋城黄金上门回收哪家靠谱?福运来口碑领跑 - 上门黄金回收