Given an m x npicture consisting of black 'B' and white 'W' pixels and an integer target, return the number of black lonely pixels.A black lonely pixel is a character 'B' located at a specific position (r, c) where:
Row r and column c both contain exactly target black pixels.
For all rows that have a black pixel at column c, they should be exactly the same as row r.
Input: picture = [["W","B","W","B","B","W"],["W","B","W","B","B","W"],["W","B","W","B","B","W"],["W","W","B","W","B","W"]], target = 3Output: 6Explanation: All the green 'B's are the black pixels we need (all 'B's at column 1 and 3).Take 'B' at row r = 0 and column c = 1 as an example: - Rule 1, row r = 0 and column c = 1 both have exactly target = 3 black pixels. - Rule 2, the rows that have a black pixel at column c = 1 are row 0, row 1 and row 2. They are exactly the same as row r = 0.
from collections import defaultdictclass Solution: # Time: O(m * n^2) # Space: O(m * n) def find_black_pixel(self, picture: list[list[str]], target: int) -> int: row_counts = [row.count("B") for row in picture] cols: dict[int, list[int]] = defaultdict(list) for i, row in enumerate(picture): for j, pixel in enumerate(row): if pixel == "B": cols[j].append(i) result = 0 for rows in cols.values(): if row_counts[rows[0]] != target or len(rows) != target: continue if all(picture[r] == picture[rows[0]] for r in rows): result += target return result