-
发表于 2024.08.09
-
直接计算两种方法(要么保证所有行回文,要么保证列回文)的翻转次数,取最小值即可: 遍历每一行/列,使用双指针判断是否回文,如果不是则累加翻转次数。
class Solution: def minFlips(self, grid: List[List[int]]) -> int: m, n = len(grid), len(grid[0]) # 行翻转 row_ans = 0 for i in range(m): l, r = 0, n - 1 while l < r: if grid[i][l] != grid[i][r]: row_ans += 1 l += 1 r -= 1 # 列翻转 col_ans = 0 for i in range(n): l, r = 0, m - 1 while l < r: if grid[l][i] != grid[r][i]: col_ans += 1 l += 1 r -= 1 # 取两种方法的最小值 return min(row_ans, col_ans)
- LC 题目链接
-