​LeetCode解法汇总​1072. 按列翻转得到最大值等行数

news/2024/7/1 4:13:18

目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:力扣


描述:

给定 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

通过次数

8.7K

提交次数

12.8K

通过率

解题思路:

 * 解题思路:
 * 其实一个位置上,我们不用关心其的值是0还是1,需要关心的是一个位置上组合后的值。
 * 比如第一行010和第二行101,其实是一样的,只要更换第二行就可以组成两行所有值都相等的行。
 * 所以,我们以第一列为0时构建一个string,添加到Map中,key为string,value为其次数。
 * 如果第一列不为0,则我们翻转这一列中所有的值。101翻转后变成010为key存到map中。

代码:

public class Solution1072 {

    public int maxEqualRowsAfterFlips(int[][] matrix) {
        Map<String, Integer> map = new HashMap<>();
        StringBuilder builder = new StringBuilder();
        for (int[] line : matrix) {
            builder.setLength(0);
            boolean isFan = line[0] == 1;
            for (int value : line) {
                builder.append(isFan ? 1 - value : value);
            }
            String key = builder.toString();
            Integer times = map.getOrDefault(key, 0);
            map.put(key, times + 1);
        }
        Integer result = map.values().stream().max(Comparator.comparingInt(o -> o)).get();
        return result;
    }
}


http://lihuaxi.xjx100.cn/news/1133196.html

相关文章

IDEA常用配置和插件总结

文章目录 1\. 配置1.1 设置编译版本1.2 设置编码1.3 自动导包1.4 自动编译1.5 设置主题1.6 设置字体字号1.7 滚轮修改字体大小1.8 控制台字体1.9 行号与方法分隔符1.10 忽略大小写字母1.11 多行显示1.12 设置 Maven1.13 GitHub 账户1.14 配置 Git1.15 配置文件隐藏1.16 配置相同…

架构活动中常见的七种冲突

在统一语义的过程中&#xff0c;发现不同角色在不同的语境中隐藏了很多冲突。日常工作时这些冲突可能并不明显&#xff0c;因为大家都在自己的隔离语境中与几个团队进行了小范围的合作。直到我们把不同语境中的概念&#xff0c;拿到一个统一的语境中来抢夺有限资源的时候&#…

某音X-Bogus算法研究 2023-05-15

本文以教学为基准&#xff0c;研究JavaScript算法及反爬策略、本文提供的可操作性不得用于任何商业用途和违法违规场景。 如有侵权&#xff0c;请联系我进行删除。 今天我们分析一下douyin个人主页数据获取。 大多数小伙伴应该都知道想要拿到douyin的数据也不是那么容易的&a…

深入解析 Facebook 分析工具,洞察用户行为和优化策略

作为一名 Facebook 运营者&#xff0c;了解用户行为和优化策略是至关重要的。在本文中&#xff0c;我们将深入解析Facebook 分析工具&#xff0c;帮助你更好地洞察用户行为和优化策略。 1.Facebook 像素 Facebook 像素是一个重要的工具&#xff0c;可以帮助运营者了解用户在网…

70.建立一个轮播图组件第一部分

本次我们的目标是实现如图所示的 初始代码如下&#xff1a; ● 现在我们把图片、文本、按钮等元素添加进去 <div class"carousel"><img src"maria.jpg" alt"Maria de Almeida" /><blockquote class"testimonial">&…

【Springboot系列】整合redis+jedis(含源码)

Spring Boot集成Redis和Jedis客户端使用Redis有以下主要特点: ​ &#x1f449;简单易用只需要添加相关依赖和简单配置,就可以直接在Spring Boot应用中使用Jedis客户端操作Redis。这大大简化了使用Redis的难度。 ​ &#x1f449;自动配置Spring Boot会根据类路径中的Jedis版…

OPPO舍弃芯片研发,让人想起欧洲芯片,国产芯片会从此溃败么?

OPPO一瞬间舍弃芯片研发&#xff0c;对国产芯片造成的影响无疑是非常大的&#xff0c;甚至可能导致国产芯片的研发由此溃败&#xff0c;这可以从当年欧洲的芯片业务衰败作为前车之鉴。 GSM称霸2G时代&#xff0c;也让欧洲手机和欧洲芯片企业取得优势&#xff0c;当年爱立信手机…

30从零开始学Java之详解面向对象的7种创建方式

作者&#xff1a;孙玉昌&#xff0c;昵称【一一哥】&#xff0c;另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 在上一篇文章中&#xff0c;壹哥给大家介绍了Java中的类及其特点、创建过程等内容&#xff0c;相信你…