LeetCode第2500题-删除每行中的最大值
题目要求
一个 m x n
大小的矩阵 grid ,由若干正整数组成。
执行下述操作,直到 grid 变为空矩阵:
从每一行删除值最大的元素。如果存在多个这样的值,删除其中任何一个。
将删除元素中的最大值与答案相加。
每执行一次操作,矩阵中列的数据就会减 1 。
举例
输入:grid = [[1,2,4],[3,3,1]]
输出:8
在第一步操作中,从第一行删除 4 ,从第二行删除 3(注意,有两个单元格中的值为 3 ,我们可以删除任一)。在答案上加 4 。
在第二步操作中,从第一行删除 2 ,从第二行删除 3 。在答案上加 3 。
在第三步操作中,从第一行删除 1 ,从第二行删除 1 。在答案上加 1 。
最终,答案 = 4 + 3 + 1 = 8 。
思路
- 循环这个grid,使得每一行的数据有序排列
- 再次循环,这次对每一列的值进行降序排列,取第一个值(每一列最大的)
- 看了题解,可以使用Math取最大的值
代码实现
/**
* @param {number[][]} grid
* @return {number}
*/
var deleteGreatestValue = function (grid) {
// const newGrid = []
// let sum = 0
// grid.forEach((data, index) => {
// newGrid[index] = data.sort((a, b) => a - b)
// })
// newGrid[0].forEach((data, index) => {
// sum += newGrid.map(g => (g[index])).sort((a, b) => b - a)[0]
// })
for (let i = 0; i < grid.length; i++) {
grid[i].sort((a, b) => a - b)
}
let sum = 0;
for (let j = 0; j < grid[0].length; j++) {
let mx = 0;
for (let i = 0; i < grid.length; i++) {
mx = Math.max(mx, grid[i][j]);
}
sum += mx;
}
return sum
};