LeetCode 1284. 转化为全零矩阵的最少反转次数(BFS 矩阵状态编码解码)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 1284. 转化为全零矩阵的最少反转次数(BFS 矩阵状态编码解码)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 題目
給你一個 m x n 的二進制矩陣 mat。
每一步,你可以選擇一個單元格并將它反轉(反轉表示 0 變 1 ,1 變 0 )。如果存在和它相鄰的單元格,那么這些相鄰的單元格也會被反轉。(注:相鄰的兩個單元格共享同一條邊。)
請你返回將矩陣 mat 轉化為全零矩陣的最少反轉次數,如果無法轉化為全零矩陣,請返回 -1 。
二進制矩陣的每一個格子要么是 0 要么是 1 。
全零矩陣是所有格子都為 0 的矩陣。
示例 1: 輸入:mat = [[0,0],[0,1]] 輸出:3 解釋:一個可能的解是反轉 (1, 0),然后 (0, 1) ,最后是 (1, 1) 。示例 2: 輸入:mat = [[0]] 輸出:0 解釋:給出的矩陣是全零矩陣,所以你不需要改變它。示例 3: 輸入:mat = [[1,1,1],[1,0,1],[0,0,0]] 輸出:6示例 4: 輸入:mat = [[1,0,0],[1,0,0]] 輸出:-1 解釋:該矩陣無法轉變成全零矩陣提示: m == mat.length n == mat[0].length 1 <= m <= 3 1 <= n <= 3 mat[i][j] 是 0 或 1 。來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/minimum-number-of-flips-to-convert-binary-matrix-to-zero-matrix
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. BFS解題
- 矩陣每個格子反轉操作后都可以轉換成數字,檢查它是否等于0(狀態)
- 先將初始狀態push進隊列,visited訪問記錄該狀態(編碼成數字)
- 然后依次更改矩陣的每個位置,如果更改后的狀態沒出現過,push進隊列
- 遇見狀態0的時候,停止BFS,返回BFS的層數,即最少反轉次數
總結
以上是生活随笔為你收集整理的LeetCode 1284. 转化为全零矩阵的最少反转次数(BFS 矩阵状态编码解码)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 1317. 将整数转换
- 下一篇: 剑指Offer - 面试题32 - I.