当前位置: 首页 > news >正文

统计有序矩阵中的负数

题目链接

统计有序矩阵中的负数

题目描述

注意点

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

解答思路

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

代码

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;
    }
}

关键点

  • 二分查找的思想
  • 利用好矩阵中的元素无论是按行还是按列,都以非严格递减顺序排列的规律

相关文章:

  • 新建菜单项的创建之CmpGetValueListFromCache函数分析
  • nuxt常用组件库html-validator应用解析
  • 使用 Selenium 和 Requests 自动化获取动态 Referer 和 Sign 的完整指南
  • 商淘云B2B2C系统 一款支持商家也能分销的多用户商城
  • 神经网络AI原理回顾
  • (YOLOv11)基于Vue Flask YOLOv11的水稻病害检测系统【含有数据大屏展示】
  • MapReduce编程模型
  • 【 实战案例篇三】【某金融信息系统项目管理案例分析】
  • 2.5 运算符2
  • Leetcode2414:最长的字母序连续子字符串的长度
  • Python测试框架Pytest的参数化
  • Python基于Django的网络课程在线学习平台【附源码】
  • 【Java面试】JVM汇总
  • STM32G431RBT6——(1)芯片命名规则
  • SpringCloud之Eureka、Ribbon、OpenFeign
  • 使用Spring Boot与达梦数据库(DM)进行多数据源配置及MyBatis Plus集成
  • 【Python修仙编程】(二) Python3灵源初探(4)
  • 泛型编程、函数模板、类模板
  • 【Pandas】pandas Series fillna
  • AIGC生图产品PM必须知道的Lora训练知识!
  • 常熟公司做网站/站长之家字体
  • 佛山知名网站建设公司/哪个浏览器看黄页最快夸克浏览器
  • 网站建设价格a去找真甲先生/百度首页纯净版怎么设置
  • 高端型网站建设/做一个公司网站大概要多少钱
  • 高大上强企业网站/江苏营销型网站建设
  • 网站建设总结报告/北京网站建设制作开发