Flip Columns For Maximum Number of Equal Rows

MediumArrayHash TableMatrix

Solution

export function maxEqualRowsAfterFlips(matrix: number[][]): number {
  const counter = new Map<string, number>();
  for (const row of matrix) {
    const pattern = row.reduce((prev, value) => prev + (value === row[0] ? '0' : '1'), '');
    counter.set(pattern, (counter.get(pattern) ?? 0) + 1);
  }
  return [...counter.values()].reduce((prev, count) => Math.max(prev, count), 0);
}

Complexity

  • Time: O(mn)O(m \cdot n)
  • Space: O(mn)O(m \cdot n)