1351统计矩阵中的负数个数

📃 题目描述

题目链接:统计矩阵中的负数

image-20220122235353701

🔔 解题思路

每层遍历的做法为o(n*m),将每一层的搜索加快,采用二分查找,可以套用找边界问题,找<0的左边界

int countNegatives(vector<vector<int>>& grid) {
    int len = grid.size() - 1;
    int left, right, mid;
    int res = 0;
    
    for (int i = 0; i <= len; i++) {
        left = 0, right = grid[i].size() - 1;
        
        while (left < right) {
            mid = left + ((right - left) >> 1);
            
            if (grid[i][mid] >= 0) left = mid + 1;//缩小左边边界。依据题意来
            else right = mid;//缩小右边边界
        }
        
        res += grid[i][left] < 0 ? grid[i].size() - left : 0;
    }
    return res;
} 

💥 复杂度分析

  • 空间复杂度:o(1)
  • 时间复杂度:o(m*logn)
posted @ 2022-05-07 11:55  D-booker  阅读(66)  评论(0)    收藏  举报