1351.统计有序数组中的负数(javascript)1351.CountNegativeNumbersinaSortedMatrix

原创
小哥 3年前 (2022-11-10) 阅读数 9 #大杂烩

给你一个 m * n 的矩阵 grid矩阵中的元素以非递增顺序排列,无论是按行还是按列。 请计数并返回 grid 中 负数 的数目。

Given a m x n matrix grid which is sorted in non-increasing order both row-wise and column-wise, return the number of negative numbers in grid.

示例 1:

输入:grid = [[4,3,2,-1],[3,2,1,-1],[1,1,-1,-2],[-1,-1,-2,-3]]
输出:8
说明:矩阵中常见 8 个负数。

示例 2:

输入:grid = [[3,2],[1,0]]
输出:0

提示:

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

根据问题的含义:
第一种方法:
1.获取m的值,grid.length
2.获取n的值,grid[0].length (len > 0)

  1. 遍历每个项目grid[i][j] ,当出现grid[i][j]< 0,num+=n-j (非增量订单)

    var countNegatives = function (grid) { let len = grid.length let everyLen = 0 if (len > 0) { everyLen = grid[0].length } let num = 0 for (let i = 0; i < len; i++) { for (let j = 0; j < everyLen; j++) { if (grid[i][j] < 0) { num += everyLen - j break //此操作超出了内部循环。 } } } return num };

第二种方法:

ES6 之数组的flat(Infinity)扁平化,可以将多维数组转换为一维数组。
//使用 Infinity 作为深度,在任意深度展开嵌套数组。

var countNegatives = function (grid) {
    const arr = grid.flat(Infinity);
    let len = arr.length
    let num = 0
    for (let i = 0; i < len; i++) {
        if (arr[i] < 0) {
            num ++
        }
    }
    return num
};

leetcode: https://leetcode-cn.com/problems/count-negative-numbers-in-a-sorted-matrix/

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除