美文网首页
1351. 统计有序矩阵中的负数

1351. 统计有序矩阵中的负数

作者: spark打酱油 | 来源:发表于2022-07-30 22:29 被阅读0次

1.题目

给你一个 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

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

2.思路

2.1 方法

  • 二分查找法:进行查找小于0的值
  • 情况有两种
    • 中值>0的操作
      if (midValue >= 0) left = mid + 1
    • 中值小于0的操作
      else并且要还要进行判断mid 是否等于 0 或者 midValue前面是否大于0这样才能进行累加为负值数,进行退出
      if(mid==0||grid(n)(mid-1)>=0) right = mid - 1
      -注意:
      将grid(n)(mid-1)>=0 这个条件放在后面否则回报指针越界 当 mid= 0 时会报这个错误 ,
      放在后面就没问题了主要是判断有种情况找到<0的值还需要进行判断前一个值是否大于0 大于0直接进行退出,否则进行继续 往前进行判断。

3.代码

object Solution {
    def countNegatives(grid: Array[Array[Int]]): Int = {
    var len = grid.length
    var n = 0
    var count = 0
    import scala.util.control.Breaks
    val loop = new Breaks
      while (n < len) {
        var left = 0
        var right = grid(n).length - 1
        loop.breakable {
        while (left <= right) {
          var mid = (right - left) / 2 + left
          var midValue = grid(n)(mid)
          if (midValue >= 0) left = mid + 1
          else {
            if(mid==0||grid(n)(mid-1)>=0){
              count = count + grid(n).length - mid
              loop.break
            }
            right = mid - 1
          }
        }
      }
        n = n + 1
    }
    count
  }
}

4.复杂度

  • 时间复杂度:O(nlogn)
  • 空间复杂度:O(1)

相关文章

  • 1351. 统计有序矩阵中的负数

    1.题目 给你一个 m * n 的矩阵 grid,矩阵中的元素无论是按行还是按列,都以非递增顺序排列。 请你统计并...

  • 统计有序矩阵中的负数

    题目: 题目的理解: 看到矩阵还是有点慌,用的比较少啊,不过多做几次应该还是可以熟练把握的。 python实现 提...

  • LeetCode题解之统计有序矩阵中的负数

    统计有序矩阵中的负数 题目描述 给你一个 m * n 的矩阵 grid,矩阵中的元素无论是按行还是按列,都以非递增...

  • 非负矩阵分解(matlab实现)

    假设由n个非负样本数据组成的非负数据矩阵X,非负矩阵分解的目标是将非负数据矩阵X分解为基矩阵W和系数矩阵H的乘积,...

  • 高维矩阵求特征根的精度问题

    如何求解矩阵的平方根? 矩阵分解后,将对角矩阵中对角元素进行平方,再复原 # 求负数的平方根: sqrt(as.c...

  • LeetCode 力扣 74. 搜索二维矩阵

    题目描述(中等难度) 判断一个矩阵中是否存在某个数,矩阵是有序的。 解法一 二分法 看到了有序序列,啥都不用想直接...

  • 数据可视化-混淆矩阵(confusion matrix)

    1. 混淆矩阵(confusion matrix)介绍 在基于深度学习的分类识别领域中,经常采用统计学中的混淆矩阵...

  • 无监督学习 - 降维 - NMF

    非负矩阵分解在距震中所有元素均为非负数约束条件之下的矩阵分解方法。 基本思想:给定一个非负矩阵V,NMF能够找到一...

  • 有序矩阵中第K小的元素

    给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第k小的元素。请注意,它是排序后的第k小元素...

  • 双指针方案-有序矩阵

    适用于有序矩阵(数组也是矩阵),相比其他算法目的是减少搜索空间,但是有前提条件,有序。关键思想:固定参数,比较,舍...

网友评论

      本文标题:1351. 统计有序矩阵中的负数

      本文链接:https://www.haomeiwen.com/subject/fevhwrtx.html