题目:原题链接(中等)

标签:数组、深度优先搜索

解法 时间复杂度 空间复杂度 执行用时
Ans 1 (Python) O ( N × M ) O(N×M) O(N×M) O ( N × M ) O(N×M) O(N×M) 548ms (55.10%)
Ans 2 (Python)
Ans 3 (Python)

解法一:

class Solution:
    def findBlackPixel(self, picture: List[List[str]], N: int) -> int:
        dic_row = collections.defaultdict(list)
        count_row = []
        for i in range(len(picture)):
            row = picture[i]
            count_row.append(row.count("B"))
            if count_row[-1] == N:
                dic_row[tuple(row)].append(i)

        rows = list(dic_row.values())
        row_dic = {}
        for r, lst in enumerate(rows):
            for i in lst:
                row_dic[i] = r

        # print(count_row)
        # print(row_dic)

        ans = 0

        for j in range(len(picture[0])):
            count = 0
            row_lst = []
            for i in range(len(picture)):
                if picture[i][j] == "B":
                    count += 1
                    row_lst.append(i)
            if count == N:
                row_set = set()
                fail = False
                for r in row_lst:
                    if r not in row_dic:
                        fail = True
                        break
                    row_set.add(row_dic[r])
                if not fail and len(row_set) == 1:
                    ans += count

        return ans