# 统计有序矩阵中的负数

# 一、题目

给你一个  m * n  的矩阵  grid,矩阵中的元素无论是按行还是按列,都以非递增顺序排列。

请你统计并返回  grid  中 负数 的数目。

示例:

输入:grid = [[4,3,2,-1],[3,2,1,-1],[1,1,-1,-2],[-1,-1,-2,-3]]
输出:8
解释:矩阵中共有 8 个负数。

# 二、题解

/**
 * @param {number[][]} grid
 * @return {number}
 */
var countNegatives = function(grid) {
  // 本题提前声明,不存在空数组情况
  let rows = grid.length; // 行
  let cols = grid[0].length; // 列
  let row = 0;
  let col = cols - 1;
  let res = 0;
  while (row < rows && col >= 0) {
    // 一次排除一列或一行
    if (grid[row][col] >= 0) {
      row++; // 这一行判断完毕
    } else {
      res += grid.length - row; // 注意这是记录的是竖列负数的个数
      col--; // 这一列判断完毕
    }
  }
  return res;
};

# 三、写在最后

本文是附加题,可能仅仅借助了二分思想中的一部分,加油!

如果对你有所帮助不妨给本项目的github 点个 star (opens new window),这是对我最大的鼓励

关于我

  • 花名:余光
  • WX:j565017805
  • 沉迷 JS,水平有限,虚心学习中

其他沉淀

Last Updated: 8/6/2021, 6:58:15 PM