LeetCode 1072. 按列翻转得到最大值等行数(查找相同的模式,哈希计数)
1. 题目
给定由若干 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
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/flip-columns-for-maximum-number-of-equal-rows
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
- 一开始想是不是动态规划
- 看答案是找最多出现的模式,如11011,00100,反转第3列后变成11111,00000,都是1或者0
- 那把0开头的或者1开头的,选一种,全部翻转,用哈希表计数,找到最多出现的
class Solution { //C++
public:int maxEqualRowsAfterFlips(vector<vector<int>>& matrix) {unordered_map<string,int> m;string s(matrix[0].size(),' ');for(auto& mat : matrix){if(mat[0] == 0){for(int i = 0; i < mat.size(); ++i){mat[i] ^= 1;s[i] = mat[i] ? '1' : '0';}}else{for(int i = 0; i < mat.size(); ++i)s[i] = mat[i] ? '1' : '0';}m[s]++;}int maxCount = 0;for(auto it = m.begin(); it != m.end(); ++it)maxCount = max(maxCount, it->second);return maxCount;}
};
384 ms 44.5 MB
class Solution:# py3def maxEqualRowsAfterFlips(self, matrix: List[List[int]]) -> int:d = {}s = [' ']*(len(matrix[0]))for mat in matrix:if mat[0]==0:for i in range(len(mat)):mat[i] ^= 1s[i] = '1' if mat[i] else '0'else:for i in range(len(mat)):s[i] = '1' if mat[i] else '0'strs = ''.join(s)if strs in d:d[strs] += 1else:d[strs] = 1maxcount = 0for key in d:maxcount = max(maxcount, d[key])return maxcount
1900 ms 15.5 MB
我 python 不太熟,不太清楚什么操作更高效,如有可优化的地方,求大佬指点!感谢!
LeetCode 1072. 按列翻转得到最大值等行数(查找相同的模式,哈希计数)相关推荐
- leetcode 5077. 按列翻转得到最大值等行数(Flip Columns For Maximum Number of Equal Rows)
目录 题目描述: 示例 1: 示例 2: 示例 3: 解法: 题目描述: 给定由若干 0 和 1 组成的矩阵 matrix,从中选出任意数量的列并翻转其上的 每个 单元格.翻转后,单元格的值从 0 变 ...
- MySQL 学习笔记(1)— 创建/连接/选择/显示数据库(表) 查询单列(多列/所有列)/查询返回特定的行数 各种排序(单列/多列/降序/组合排序) 过滤数据
本文是对之前学习 MySQL 的一个总结,使用思维导图的方式将涉及到的知识点罗列出来,一方面作为自己对于知识点的归纳,另一方面也便于日后查询. 在该篇文章中将对 MySQL 的基本使用.检索基本数据. ...
- LeetCode(806)——写字符串需要的行数(JavaScript)
我们要把给定的字符串 S 从左到右写到每一行上,每一行的最大宽度为100个单位,如果我们在写某个字母的时候会使这行超过了100 个单位,那么我们应该把这个字母写到下一行.我们给定了一个数组 width ...
- 在一个SQL Server表中的多个列找出最大值
在一个SQL Server表中一行的多个列找出最大值 有时候我们需要从多个相同的列里(这些列的数据类型相同)找出最大的那个值,并显示 这里给出一个例子 IF (OBJECT_ID('tempdb..# ...
- 数据结构第5章例题 若矩阵Am×n中存在某个元素aij满足:aij是第i行中的最小值且是第j列中的最大值,则称该元素为矩阵A的一个鞍点。试编写一个算法,找出A中的所有鞍点。
[例5.1] 若矩阵Am×n中存在某个元素aij满足:aij是第i行中的最小值且是第j列中的最大值,则称该元素为矩阵A的一个鞍点.试编写一个算法,找出A中的所有鞍点. 算法如下: void saddl ...
- server取出多个最小值 sql_sql语句,需要取出多个字段列中的最大值和最小值
今天写 sql 语句,需要取出多个字段列中的最大值和最小值. 本来想到的做法比较麻烦,要分别取出 max(one),max(two),max(three) ,放到 pb 中 在编程处理. 后来找到个 ...
- 盘点使用Pandas解决问题:对比两列数据取最大值的5个方法
点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 近寒食雨草萋萋,著麦苗风柳映堤. ...
- 【数据库】sqlite中的限制:数据库大小、表数、列数、行数、参数个数、连接数等
目录 一.参考网址 二.详解 1.查看.设置sqlite限制命令.limit 2.SQLite中的限制汇总 1)字符串或BLOB的最大长度 2)最大列数 3)SQL语句的最大长度 4)联接中的最大表数 ...
- python输入正方形边长值、计算其面积_尝试修改列6.2编写命令行参数解析的程序,解析命令行参数所输入边长的值,计算并输出正方形的周长和面积。_学小易找答案...
[简答题] [单选题]ZigBee 中每个协调点最多可连接______个节点,一个ZigBee网络最多可容纳______个节点.( ) [资料题]DWord-Ans.pdf 索引和目录.pdf 完成效 ...
最新文章
- 分享Kali Linux 2017年第30周镜像文件
- nginx模块学习六 add_header 跨域访问
- Elasticsearch kibana一些基本概念
- SAP Spartacus UnitDetailsComponent的路由跟踪
- 基于云平台的家居综合监测管理系统的设计与实现
- StringBuffer与StringBuilder
- ORACLE HANDBOOK系列之十一:分区(Partition)
- 软件著作权申报中60页标准代码文档的写作经验谈(1)
- c语言ide 字体大小,配置最小c语言IDE
- threejs 三面体_three.js几何体对象_三维建模_郭隆邦技术博客
- 网络研讨会|为什么在开发流程中应用静态代码分析工具?
- 小米平板4刷recovery教程_小米平板2中文Recovery刷机教程
- The vertically scrolling ScrollView should not contain another vertically scrolling widget (ListView
- win2008R2 AD域 网络驱动映射
- 牛腩——遇到的问题总结
- Linux 管理面板云帮手、APPNODE与宝塔哪个好
- 【Python 实战基础】Flask 蓝图 Blueprint 怎么用以及怎么集成 Bootstrap
- VR全景的拍摄制作上传
- 无线串口模块通信技术参数快速选型指南
- 天气预报实时显示系统设计
热门文章
- SQLAlchemy中filter_by()和filter()的用法不同
- Hbase读写数据的原理解析
- mysql关系模式怎么画_关系数据库与mysql
- ap模式和sta模式共存_AP+AC组网下的本地转发及集中转发
- 05_JS流程控制语句
- tableau 倒序都倒了_Tableau优秀作品拆解复刻01-是时候终结瘘管病了
- 第二季3:海思MPP模块与视频缓冲池
- Linux进程全解12——lIPC机制之管道,SystemV IPC介绍
- PHP json_encode后的数据有的大括号于中括号
- Leetcode分类