题目描述
一个 n x n 的二维网络 board 仅由 0 和 1 组成 。每次移动,你能任意交换两列或是两行的位置。
返回将这个矩阵变为 “棋盘” 所需的最小移动次数 。如果不存在可行的变换,输出 -1。 “棋盘” 是指任意一格的上下左右四个方向的值均与本身不同的矩阵。
示例 1:
输入: board = [[0,1,1,0],[0,1,1,0],[1,0,0,1],[1,0,0,1]]
输出: 2
解释:一种可行的变换方式如下,从左到右: 第一次移动交换了第一列和第二列。 第二次移动交换了第二行和第三行。
来源:力扣(LeetCode) 链接:leetcode.cn/problems/tr… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路
- 图片就不搞了,有兴趣的伙伴可以去链接里面看题目
- 思路是用矩阵的思维解题, 目前想到的是对矩阵进行任意基础变换不改变矩阵的秩, 因此想通过对于 n*n的矩阵进行 奇数和偶数行的讨论
- 或者是通过扫描每列的 1 的个数进行分析
解法
//todo 待完善