删除每行中的最大值【LC2500】
给你一个
m x n
大小的矩阵grid
,由若干正整数组成。执行下述操作,直到
grid
变为空矩阵:
- 从每一行删除值最大的元素。如果存在多个这样的值,删除其中任何一个。
- 将删除元素中的最大值与答案相加。
注意 每执行一次操作,矩阵中列的数据就会减 1 。
返回执行上述操作后的答案。
-
思路
将数组的每行进行排序,每次删除得分为该列的最大值,累加返回结果
-
实现
javaclass Solution { public int deleteGreatestValue(int[][] grid) { int n = grid.length, m = grid[0].length, res = 0; for (int i = 0; i < n; i++){ Arrays.sort(grid[i]); } for (int i = 0; i < m; i++){ int mx = 0; for (int j = 0; j < n; j++){ mx = Math.max(mx, grid[j][i]); } res += mx; } return res; } }
- 复杂度
- 时间复杂度: O ( n ∗ m ∗ log m ) \mathcal{O}(n*m*\log m) O(n∗m∗logm)
- 空间复杂度: O ( log m ) \mathcal{O}(\log m) O(logm)
- 复杂度