1072. Flip Columns For Maximum Number of Equal Rows
有m*n的binary matrix
可以选择任一行,将那一行的元素翻转(1->0、0->1)
这个操作可以做任意次
请问经过任意次操作后
可以得到最多几个列(列里面的元素全为1或0)
思路:
当两个列的每个元素完全相同或完全相反
就可以透过flip得到全为1/0的列
所以去纪录完全相同/相反的列有几个
接着去找最多的数量就是答案
golang code :
func maxEqualRowsAfterFlips(matrix [][]int) int {
rec := make(map[string]int)
for _, val := range matrix {
tmp := strings.Builder{}
if val[0] == 1 {
for _, char := range val {
tmp.WriteByte(byte(char))
}
} else {
for _, char := range val {
char ^= 1
tmp.WriteByte(byte(char))
}
}
rec[tmp.String()]++
}
ans := 0
for _, val := range rec {
ans = max(ans, val)
}
return ans
}