Skip to content

Latest commit

 

History

History
57 lines (47 loc) · 1.27 KB

File metadata and controls

57 lines (47 loc) · 1.27 KB

1351. Count Negative Numbers in a Sorted Matrix

Given a m * n matrix grid which is sorted in non-increasing order both row-wise and column-wise.

Return the number of negative numbers in grid.

Example 1:

Input: grid = [[4,3,2,-1],[3,2,1,-1],[1,1,-1,-2],[-1,-1,-2,-3]]
Output: 8
Explanation: There are 8 negatives number in the matrix.

Example 2:

Input: grid = [[3,2],[1,0]]
Output: 0

Example 3:

Input: grid = [[1,-1],[-1,-1]]
Output: 3

Example 4:

Input: grid = [[-1]]
Output: 1

Constraints:

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

Solutions (Rust)

1. Binary Search

impl Solution {
    pub fn count_negatives(grid: Vec<Vec<i32>>) -> i32 {
        let m = grid.len();
        let n = grid[0].len();
        let mut pos = 0;

        for row in grid {
            match row.binary_search_by(|probe| 0.cmp(&probe)) {
                Ok(i) => pos += i + 1,
                Err(i) => pos += i,
            }
        }

        (m * n - pos) as i32
    }
}