首页 > 其他 > 详细

LeetCode 1072. 按列翻转得到最大值等行数

时间:2020-07-12 20:02:23      阅读:70      评论:0      收藏:0      [点我收藏+]

给定由若干 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

LeetCode 1072. 按列翻转得到最大值等行数

原文:https://www.cnblogs.com/sandy-t/p/13289339.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!