首页 > 其他分享 >力扣---1072. 按列翻转得到最大值等行数

力扣---1072. 按列翻转得到最大值等行数

时间:2023-05-15 15:37:31浏览次数:40  
标签:map arr matrix int res 1072 按列 --- 翻转

给定 m x n 矩阵 matrix 。

你可以从中选出任意数量的列并翻转其上的 每个 单元格。(即翻转后,单元格的值从 0 变成 1,或者从 1 变为 0 。)

返回 经过一些翻转后,行与行之间所有值都相等的最大行数 。

 

示例 1:

输入:matrix = [[0,1],[1,1]]
输出:1
解释:不进行翻转,有 1 行所有值都相等。
示例 2:

输入:matrix = [[0,1],[1,0]]
输出:2
解释:翻转第一列的值之后,这两行都由相等的值组成。
示例 3:

输入:matrix = [[0,0,0],[0,0,1],[1,1,0]]
输出:2
解释:翻转前两列的值之后,后两行由相等的值组成。
 

提示:

m == matrix.length
n == matrix[i].length
1 <= m, n <= 300
matrix[i][j] == 0 或 1

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/flip-columns-for-maximum-number-of-equal-rows
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


 

这道题的中文题目是真的读不懂。。。

你可以把某一行的所有 0 变成 1,并且把所有 1 变成 0 。

求经过一些这样的变换后,相同行的数量。

很明显,可以将某一行转为字符串后用哈希表存储,最后返回最大值即可。

class Solution {
    public int maxEqualRowsAfterFlips(int[][] matrix) {
        Map<String, Integer> map = new HashMap<>();
        for (int[] arr : matrix) {
            String s = getString(arr);
            map.put(s, map.getOrDefault(s, 0) + 1);
            for (int i = 0; i < arr.length; i++) {
                arr[i] = arr[i] ^ 1;
            }
            s = getString(arr);
            map.put(s, map.getOrDefault(s, 0) + 1);
        }
        int res = 0;
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            res = Math.max(res, entry.getValue());
        }
        return res;
    }

    private String getString (int[] arr) {
        char[] str = new char[arr.length];
        for (int i = 0; i < arr.length; i++) {
            str[i] = (char) arr[i];
        }
        return new String(str);
    }
}

 优化优化,可以发现:对于 0101 来说,实际上是和 1010 等价的,于是,我们可以把所有的行开头的都转为 0 ,这样可以只存一次。

class Solution {
    public int maxEqualRowsAfterFlips(int[][] matrix) {
        Map<String, Integer> map = new HashMap<>();
        for (int[] arr : matrix) {
            char[] str = new char[arr.length];
            for (int i = 0; i < arr.length; i++) {
                // 异或,相同为 0 ,不同为 1 。
                // 利用该特点,可以将所有行转为 1 开头。
                str[i] = (char) (arr[i] ^ arr[0]);
            }
            String s = new String(str);
            map.put(s, map.getOrDefault(s, 0) + 1);
        }
        int res = 0;
        // 只需要知道 value 。
        for (int value : map.values()) {
            res = Math.max(res, value);
        }
        return res;
    }
}

 

标签:map,arr,matrix,int,res,1072,按列,---,翻转
From: https://www.cnblogs.com/allWu/p/17402017.html

相关文章

  • minikube提示找不到“Features.Enable-SwaggerUI”flag错误
    安装minikube之后想要开启apiswagger,发现报如下错误:❌在kube-apiserver[1346b5005eae]中检测到问题:Error:unknownflag:--Features.Enable-SwaggerUI查资料发现是k8s中已经移除了api的swagger,想要查看api的swagger文档需要自己启动swaggerui服务(请自行搜索)。但......
  • ChatGPT Plugin开发setup - Java(Spring Boot) Python(fastapi)
    记录一下快速模板,整体很简单,如果不接auth,只需要以下:提供一个/.well-known/ai-plugin.json接口,返回openAI所需要的格式提供openAPI规范的文档CORS设置其他的和普通的web开发类似.本地开发就直接使用localhost即可,前几天官方localhost无法联通,最近应该修复了.要让GPT......
  • if-elif-else详细学习
    python之所以能按指令执行程序,是因为每个指令都有逻辑可循,python的沟通逻辑主要也是用的条件判断:明确的让计算机知道,在什么条件下,该去做什么。if语句就是Python常用的条件判断语句,if条件判断主要有三种形式:单向判断(if)、双向判断(if...else...)和多向判断(if...elif...eles...)。Py......
  • web自动化14--读取excel文件
    1、安装xlrd模块,pipinstallxlrd,成功后2、打开exlce表格data=xlrd.open_workbook('test.xlsx')table=data.sheets()[0]          # 通过索引顺序获取sheettable=data.sheet_by_index(0)    # 通过索引顺序获取table=data.sheet_by_name(u'She......
  • 问鼎CodeXGLUE榜单,华为云UniXcoder-VESO-v1算法取得突破
    摘要:华为云PaaS技术创新团队基于UniXcoder模型,在公开测试数据集(CodeXGLUE)上的代码搜索任务评测结果上取得突破,在CodeXGLUE榜单上排名中第一。本文分享自华为云社区《代码语义搜索算法哪家强?华为云UniXcoder-VESO-v1算法取得突破,问鼎CodeXGLUE榜单第一名》,作者:华为云软件分析Lab......
  • 摄影-230515
    ......
  • 天梯赛L1-044 稳赢
    一、问题描述大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:现要求你编写一个稳赢不输的程序,根据对方的出招,给出对应的赢招。但是!为了不让对方输得太惨,你需要每隔K次就让一个平局。输入格式:输入首先在第一行给出正整数K(≤10),即平局间隔的次数。随后每行......
  • 鲸鱼WOA-XGboost拟合预测建模模型,数据格式多维自变量输入,单维因变量输出,直接替换数据
    鲸鱼WOA-XGboost拟合预测建模模型,数据格式多维自变量输入,单维因变量输出,直接替换数据就可以使用,程序内注释详细YID:6836673542099628......
  • pycharm-professional-2023 下载安装
    PyCharmProfessional是一款针对Python编程的集成开发环境(IDE),由JetBrains公司开发和维护。它是PyCharm社区版的升级版,提供了更多的功能和工具,旨在提高Python开发人员的生产力和效率。以下是PyCharmProfessional的一些主要功能:智能代码编辑:PyCharm提供了智能代......
  • langchain-ChatGLM调研
    https://github.com/imClumsyPanda/langchain-ChatGLM 1.确定显卡规格lspci|grep-invidia00:07.03Dcontroller:NVIDIACorporationGV100GL[TeslaV100SXM232GB](reva1)2.确定显卡运行状况nvidia-smi如果有问题,需要先装显卡的驱动aptsearchnvidia-drive......