【題目描述】
Given a 2D board containing?'X'?and?'O', capture all regions surrounded by?'X'.
A region is captured by flipping all?'O''s into?'X''s in that surrounded region.
給一個(gè)二維的矩陣,包含?'X'?和?'O', 找到所有被 'X' 圍繞的區(qū)域,并用 'X' 填充滿。
【題目鏈接】
www.lintcode.com/en/problem/surrounded-regions/
【題目解析】
目標(biāo)是要找到由X包圍起來(lái)的O的區(qū)域。
首先,外圍一圈上的O肯定會(huì)保留下來(lái)。然后,從外圍的O能達(dá)到的O也要保留。剩下其他的O就是內(nèi)部的O。所以方法就是從外圍的一圈進(jìn)行DFS算法:依次對(duì)外圈的“O”做DFS,將其可以到達(dá)O臨時(shí)設(shè)置為#。
特殊用例:只有外圍輪廓沒(méi)有內(nèi)部。比如長(zhǎng)或者寬小于2,此時(shí)不存在被包圍的'X'。
【參考答案】