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