# 统计有序矩阵中的负数
# 一、题目
给你一个 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,水平有限,虚心学习中
其他沉淀