LeetCode 1284. 转化为全零矩阵的最少反转次数(BFS 矩阵状态编码解码)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 1284. 转化为全零矩阵的最少反转次数(BFS 矩阵状态编码解码)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1. 題目
給你一個(gè) m x n 的二進(jìn)制矩陣 mat。
每一步,你可以選擇一個(gè)單元格并將它反轉(zhuǎn)(反轉(zhuǎn)表示 0 變 1 ,1 變 0 )。如果存在和它相鄰的單元格,那么這些相鄰的單元格也會(huì)被反轉(zhuǎn)。(注:相鄰的兩個(gè)單元格共享同一條邊。)
請你返回將矩陣 mat 轉(zhuǎn)化為全零矩陣的最少反轉(zhuǎn)次數(shù),如果無法轉(zhuǎn)化為全零矩陣,請返回 -1 。
二進(jìn)制矩陣的每一個(gè)格子要么是 0 要么是 1 。
全零矩陣是所有格子都為 0 的矩陣。
示例 1: 輸入:mat = [[0,0],[0,1]] 輸出:3 解釋:一個(gè)可能的解是反轉(zhuǎn) (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 解釋:該矩陣無法轉(zhuǎn)變成全零矩陣提示: 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
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
2. BFS解題
- 矩陣每個(gè)格子反轉(zhuǎn)操作后都可以轉(zhuǎn)換成數(shù)字,檢查它是否等于0(狀態(tài))
- 先將初始狀態(tài)push進(jìn)隊(duì)列,visited訪問記錄該狀態(tài)(編碼成數(shù)字)
- 然后依次更改矩陣的每個(gè)位置,如果更改后的狀態(tài)沒出現(xiàn)過,push進(jìn)隊(duì)列
- 遇見狀態(tài)0的時(shí)候,停止BFS,返回BFS的層數(shù),即最少反轉(zhuǎn)次數(shù)
總結(jié)
以上是生活随笔為你收集整理的LeetCode 1284. 转化为全零矩阵的最少反转次数(BFS 矩阵状态编码解码)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 1317. 将整数转换
- 下一篇: 剑指Offer - 面试题32 - I.