1568。斷開島嶼連接的最短天數
難度:難
主題:陣列、深度優先搜尋、廣度優先搜尋、矩陣、強連通分量
給你一個 m x n 二進位網格,其中 1 代表土地,0 代表水。 島嶼 是最大4 向(水平或垂直)連接的1 組。
如果我們剛好有一個島嶼,則稱為網格已連接,否則稱已斷開。
有一天,我們可以把任何一個陸地單元(1)變成水單元(0)。
回傳斷開電網的最小天數。
範例1:
範例2:
約束:
提示:
解:
我們需要考慮以下步驟:
檢查初始連通性:首先,透過確定網格中是否存在多個島嶼來檢查網格是否已經斷開。如果已經斷開連接,則傳回 0。
檢查單一移除是否會斷開島嶼的連接:迭代網格的每個單元格。暫時將單元格從 1 轉換為 0(如果是 1),並透過計算島嶼數量來檢查網格是否斷開。如果轉換單一儲存格會斷開島的連接,則傳回 1。
兩天斷網:如果沒有單一單元轉換斷開島嶼,則可以透過轉換任兩個相鄰的陸地單元來斷開電網。因此,返回 2。
讓我們用 PHP 實作這個解:1568。斷開島嶼連接的最短天數
<?php // Example usage: $grid1 = [ [0, 1, 1, 0], [0, 1, 1, 0], [0, 0, 0, 0] ]; echo minDays($grid1); // Output: 2 $grid2 = [ [1, 1] ]; echo minDays($grid2); // Output: 2 ?>
聯絡連結
如果您發現本系列有幫助,請考慮在 GitHub 上給 存儲庫 一個星號或在您最喜歡的社交網絡上分享該帖子? 。您的支持對我來說意義重大!
如果您想要更多類似的有用內容,請隨時關注我:
以上是斷開島嶼連接的最少天數的詳細內容。更多資訊請關注PHP中文網其他相關文章!