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);
    }
};
相关推荐
希望之晨9 分钟前
c++ 11 学习 函数模板
linux·开发语言·c++
今儿敲了吗16 分钟前
27| 魔法封印
数据结构·c++·笔记·学习·算法
今儿敲了吗22 分钟前
30| 木材加工
数据结构·c++·笔记·学习·算法
WW_千谷山4_sch28 分钟前
MYOJ_7789:(洛谷P3388)【模板】割点(割顶)(tarjan算法)
c++·算法·深度优先·图论
锅包一切29 分钟前
PART7 队列
c++·学习·算法·leetcode·力扣·刷题·队列
Fms_Sa1 小时前
设计并实现日期类Date,它至少包含下列特性:
c++·算法
Lsir10110_1 小时前
【Linux】生产者-消费者模型及条件变量
linux·运维·开发语言·c++
仰泳的熊猫1 小时前
题目1549:蓝桥杯算法提高VIP-盾神与积木游戏
数据结构·c++·算法·蓝桥杯
tod1131 小时前
C++核心知识点全解析(三)
开发语言·c++·面试经验
WW_千谷山4_sch1 小时前
MYOJ_11705:(洛谷P1137)旅行计划(经典拓扑排序)
c++·算法·动态规划·图论