Post

3492 Count Submatrices With Equal Frequency Of X And Y

3492 Count Submatrices With Equal Frequency Of X And Y

Count Submatrices With Equal Frequency of X and Y image

Given a 2D character matrix grid, where grid[i][j] is either ‘X’, ‘Y’, or ‘.’, return the number of submatrices that contain:

1
2
3
grid[0][0]
an **equal** frequency of 'X' and 'Y'.
**at least** one 'X'.

 

Example 1:

Input: grid = [[“X”,”Y”,”.”],[“Y”,”.”,”.”]]

Output: 3

Explanation:

image

Example 2:

Input: grid = [[“X”,”X”],[“X”,”Y”]]

Output: 0

Explanation:

No submatrix has an equal frequency of ‘X’ and ‘Y’.

Example 3:

Input: grid = [[”.”,”.”],[”.”,”.”]]

Output: 0

Explanation:

No submatrix has at least one ‘X’.

 

Constraints:

1
2
1 <= grid.length, grid[i].length <= 1000
grid[i][j] is either 'X', 'Y', or '.'.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

class Solution:
    def numberOfSubmatrices(self, grid: List[List[str]]) -> int:
        n, m = len(grid), len(grid[0])
        ans = 0
        sum = [[[0, 0] for _ in range(m + 1)] for _ in range(n + 1)]

        for i in range(n):
            for j in range(m):
                if grid[i][j] == "X":
                    sum[i + 1][j + 1][0] = (
                        sum[i + 1][j][0] + sum[i][j + 1][0] - sum[i][j][0] + 1
                    )
                    sum[i + 1][j + 1][1] = 1
                elif grid[i][j] == "Y":
                    sum[i + 1][j + 1][0] = (
                        sum[i + 1][j][0] + sum[i][j + 1][0] - sum[i][j][0] - 1
                    )
                    sum[i + 1][j + 1][1] = sum[i + 1][j][1] | sum[i][j + 1][1]
                else:
                    sum[i + 1][j + 1][0] = (
                        sum[i + 1][j][0] + sum[i][j + 1][0] - sum[i][j][0]
                    )
                    sum[i + 1][j + 1][1] = sum[i + 1][j][1] | sum[i][j + 1][1]
                if sum[i + 1][j + 1][0] == 0 and sum[i + 1][j + 1][1] == 1:
                    ans += 1

        return ans



This post is licensed under CC BY 4.0 by the author.