zoukankan      html  css  js  c++  java
  • LeetCode 1072. 按列翻转得到最大值等行数

    给定由若干 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
    
  • 相关阅读:
    图床_OpenStack-镜像服务
    图床_OpenStack-认证服务
    图床_OpenStack-基础环境
    #linux包之tcpdump之tcpdump命令
    利用OpenCms9提供的模块创建新站点
    Cocos2d-x3.0下实现循环列表
    Modbus读写模拟量寄存器具体解释
    C++ 实践总结
    spring Quartz基于配置文件和注解的实现
    EEPLAT学习
  • 原文地址:https://www.cnblogs.com/sandy-t/p/13289339.html
Copyright © 2011-2022 走看看