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};