2713. 矩阵中严格递增的单元格数

2713. 矩阵中严格递增的单元格数


题目链接:2713. 矩阵中严格递增的单元格数

代码如下:

cpp 复制代码
//动态规划+优化
//参考链接:https://leetcode.cn/problems/maximum-strictly-increasing-cells-in-a-matrix/solutions/2286920/dong-tai-gui-hua-you-hua-pythonjavacgo-b-axv0
class Solution 
{
public:
    int maxIncreasingCells(vector<vector<int>>& mat) 
    {
        map<int,vector<pair<int,int>>> graph;
        for(int i=0;i<mat.size();i++)
        {
            for(int j=0;j<mat[0].size();j++)
            {
                // 相同元素放在同一组,统计位置
                graph[mat[i][j]].emplace_back(i,j);
            }
        }

        vector<int> row_max(mat.size()),col_max(mat[0].size());
        for(auto& [_,pos]:graph)
        {
            vector<int> mx;// 先把最大值算出来,再更新 row_max 和 col_max
            for(auto& [i,j]:pos)
            {
                mx.push_back(max(row_max[i],col_max[j])+1);
            }
            for(int k=0;k<pos.size();k++)
            {
                auto& [i,j]=pos[k];
                row_max[i]=max(row_max[i],mx[k]);// 更新第 i 行的最大 f 值
                col_max[j]=max(col_max[j],mx[k]);// 更新第 j 列的最大 f 值
            }
        }
        return ranges::max(row_max);
    }
};
相关推荐
点云SLAM1 小时前
C++创建文件夹和文件夹下相关操作
开发语言·c++·算法
CodeClimb1 小时前
【华为OD-E卷 - 猜字谜100分(python、java、c++、js、c)】
java·javascript·c++·python·华为od
_小柏_1 小时前
C/C++基础知识复习(46)
c语言·开发语言·c++
pl00202 小时前
C++运算符重载实例
开发语言·c++·运算符重载·单目运算符·双目运算符·流运算符
煤泥做不到的!2 小时前
挑战一个月基本掌握C++(第十二天)了解命名空间,模板,预处理器
开发语言·c++
XZHOUMIN2 小时前
【MFC】多工具栏如何保存状态(续)
c++·mfc
界面开发小八哥2 小时前
MFC扩展库BCGControlBar Pro v36.0 - 可视化管理器等全新升级
c++·mfc·bcg·界面控件·ui开发
TANGLONG2223 小时前
【初阶数据结构与算法】八大排序算法之归并排序与非比较排序(计数排序)
java·数据结构·c++·算法·面试·蓝桥杯·排序算法
橘颂TA4 小时前
【C++】数据结构 单链表的实现(企业存储用户数据的实现)
开发语言·数据结构·c++
ltwoxc4 小时前
01-c++对c的扩展(上)
c++