统计有序矩阵中的负数

题目链接

统计有序矩阵中的负数

题目描述

注意点

  • 1 <= m, n <= 100
  • -100 <= grid[i][j] <= 100
  • 矩阵中的元素无论是按行还是按列,都以非严格递减顺序排列

解答思路

  • 第一种思路是遍历每一行,再对每行进行二分查找找到每一行第一个负数的位置,求得该行负数的数量,将每一行的结果相加即可
  • 因为矩阵中的元素无论是按行还是按列,都以非严格递减顺序排列。所以在找到某一行最后一个正数的位置preCol后(此时该行的负数数量为n - preCol - 1),且下一行preCol之后的元素肯定都是负数(按行递减),所以下一行只需要从preCol开始往前遍历,继续找到下一行最后一个整数的列即可,以此类推,找到每一行的负数数量相加即可

代码

java 复制代码
class Solution {
    public int countNegatives(int[][] grid) {
        int res = 0;
        int m = grid.length;
        int n = grid[0].length;
        // 上一行最后一个正数的列
        int preCol = n - 1;
        for (int i = 0; i < m; i++) {
            while (preCol >= 0 && grid[i][preCol] < 0) {
                preCol--;
            }
            res += n - preCol - 1;
        }
        return res;
    }
}

关键点

  • 二分查找的思想
  • 利用好矩阵中的元素无论是按行还是按列,都以非严格递减顺序排列的规律
相关推荐
怡人蝶梦1 小时前
Java后端技术栈问题排查实战:Spring Boot启动慢、Redis缓存击穿与Kafka消费堆积
java·jvm·redis·kafka·springboot·prometheus
瓯雅爱分享1 小时前
MES管理系统:Java+Vue,含源码与文档,实现生产过程实时监控、调度与优化,提升制造企业效能
java·mysql·vue·软件工程·源代码管理
PixelMind1 小时前
【LUT技术专题】图像自适应3DLUT
图像处理·深度学习·算法·3dlut
鬼多不菜2 小时前
一篇学习CSS的笔记
java·前端·css
深色風信子2 小时前
Eclipse 插件开发 5.3 编辑器 监听输入
java·eclipse·编辑器·编辑器 监听输入·插件 监听输入
Blossom.1182 小时前
人工智能在智能健康监测中的创新应用与未来趋势
java·人工智能·深度学习·机器学习·语音识别
木子.李3472 小时前
数据结构-算法学习C++(入门)
数据库·c++·学习·算法
GIS小天2 小时前
AI预测3D新模型百十个定位预测+胆码预测+去和尾2025年5月31日第94弹
人工智能·算法·机器学习·彩票
shangjg32 小时前
Kafka 如何保证不重复消费
java·分布式·后端·kafka