Re: [闲聊] 每日leetcode

楼主: Rushia (みけねこ的鼻屎)   2024-11-23 01:50:16
※ 引述《JIWP (神楽めあ的钱包)》之铭言:
: 1072. Flip Columns For Maximum Number of Equal Rows
: 有m*n的binary matrix
: 可以选择任一行,将那一行的元素翻转(1->0、0->1)
: 这个操作可以做任意次
: 请问经过任意次操作后
: 可以得到最多几个列(列里面的元素全为1或0)
一开始看hint根本看不懂在工三小
就用暴力法解 代码很丑就不贴了 测资大小才300所以O(n^3)可以过
看了下解答区赞最多的思路
简单来说一个列只可能是全0或全1
假设你翻转了一个列为全0,所有和他长的一样的列也会变全0
然后和他刚好完全相反的会变全1
0101 -> 翻转成全0 -> 0000
0101 -> -> 0000
1010 -> 翻转成全1 -> 1111
0011 -> 不全0或全1-> 1100
这两个的数量加起来就是翻转后的相等列,取最大就好
直接run只赢过50%
对列做字串hash跳过长的一样的列 跑得跟我暴力法一样慢(???)
最后改用标记法不hash就赢过99%
又学到一课
Java Code
作者: oin1104 (是oin的说)   2024-11-23 02:46:00
大师

Links booklink

Contact Us: admin [ a t ] ucptt.com