当前位置: 代码迷 >> 综合 >> C练题笔记之:Leetcode-1351. 统计有序矩阵中的负数
  详细解决方案

C练题笔记之:Leetcode-1351. 统计有序矩阵中的负数

热度:57   发布时间:2024-02-08 21:33:55.0

题目:

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

请你统计并返回 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
示例 3:

输入:grid = [[1,-1],[-1,-1]]
输出:3
示例 4:

输入:grid = [[-1]]
输出:1

提示:

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/count-negative-numbers-in-a-sorted-matrix
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

结果:

解题思路:

因为是有序数组,所以每一个一维数组中,一旦出现负数,其后面都是负数。如 4 -1 -2 -3,因此只要有负数只要计算一维数组总共长度与第一个负数小标的差就是这组数组中负数的数量。

代码:

int countNegatives(int** grid, int gridSize, int* gridColSize){int count = 0;for(int i = 0; i < gridSize; i++){for(int j = 0; j < *gridColSize; j++){if(grid[i][j] < 0){count += *gridColSize - j;break;}}}return count;
}