LeetCode面向运气之Javascript—第2500题-删除每行中的最大值-93.51%

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 。

思路

  1. 循环这个grid,使得每一行的数据有序排列
  2. 再次循环,这次对每一列的值进行降序排列,取第一个值(每一列最大的)
  3. 看了题解,可以使用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

};

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值