LeetCode 1072. 按列翻轉得到最大值等行數
阿新 • • 發佈:2020-07-12
給定由若干 0 和 1 組成的矩陣 matrix,從中選出任意數量的列並翻轉其上的 每個 單元格。翻轉後,單元格的值從 0 變成 1,或者從 1 變為 0 。
返回經過一些翻轉後,行上所有值都相等的最大行數。
示例 1:
輸入:[[0,1],[1,1]]
輸出:1
解釋:不進行翻轉,有 1 行所有值都相等。
示例 2:
輸入:[[0,1],[1,0]]
輸出:2
解釋:翻轉第一列的值之後,這兩行都由相等的值組成。
示例 3:
輸入:[[0,0,0],[0,0,1],[1,1,0]]
輸出:2
解釋:翻轉前兩列的值之後,後兩行由相等的值組成。
提示:
1 <= matrix.length <= 300
1 <= matrix[i].length <= 300
所有 matrix[i].length 都相等
matrix[i][j] 為 0 或 1
class Solution: def maxEqualRowsAfterFlips(self, matrix: List[List[int]]) -> int: counter_dic = dict() maxCount = 0 for row in matrix: if row[0] == 1: tup_row = tuple(1-x for x in row) else: tup_row = tuple(row) # 把tuple_row存在字典裡 if tup_row in counter_dic: counter_dic[tup_row] += 1 else: counter_dic[tup_row] = 1 # 遍歷找到最大值 for count in counter_dic.values(): maxCount = max(maxCount, count) return maxCount