2023-07-27 LeetCode每日一题(删除每行中的最大值)

2023-07-27每日一题

一、题目编号

2500. 删除每行中的最大值

二、题目链接

点击跳转到题目位置

三、题目描述

给你一个 m x n 大小的矩阵 grid ,由若干正整数组成。

执行下述操作,直到 grid 变为空矩阵:

  • 从每一行删除值最大的元素。如果存在多个这样的值,删除其中任何一个。
  • 将删除元素中的最大值与答案相加。

注意 每执行一次操作,矩阵中列的数据就会减 1 。

返回执行上述操作后的答案。

提示:

  • m == grid.length
  • n == grid[i].length
  • 1 <= m, n <= 50
  • 1 <= grid[i][j] <= 100

示例1:
2023-07-27 LeetCode每日一题(删除每行中的最大值)_第1张图片
示例2:
2023-07-27 LeetCode每日一题(删除每行中的最大值)_第2张图片

四、解题代码

class Solution {
public:
    int deleteGreatestValue(vector<vector<int>>& grid) {
        for(int i = 0; i < grid.size(); ++i){
            sort(grid[i].begin(), grid[i].end(), greater<int>());
        }
        int ret = 0;
        for(int i = grid[i].size() - 1; i >= 0; --i){
            int max0 = 0;
            for(int j = 0; j < grid.size(); ++j){
                max0 = max(max0, grid[j][i]);
            }
            ret += max0;
        }   
    return ret;
    }
};

五、解题思路

(1) 因为每一次都要删除每一行最大的元素,为了方便删除,所以我们先将每一行的数组从大到小排序,这样我们顺序遍历后得到的每一行的数字就是从大到小的。

(2) 然后我们纵向遍历,意味着每一列每一列遍历,这样我们每次找到的都是每一行最大的数字。然后我们一次遍历就可以得到这一列需要删除的数字中最大的数字,将结果加上该最大的数字即可。

(3) 最后返回结果即可得到正确的结果。

你可能感兴趣的:(LeetCode每日一题,leetcode,算法,数据结构)