給定乙個二維的甲板, 請計算其中有多少艘戰艦。 戰艦用 'x』表示,空位用 '.'表示。 你需要遵守以下規則:
給你乙個有效的甲板,僅由戰艦或者空位組成。
戰艦只能水平或者垂直放置。換句話說,戰艦只能由 1xn (1 行, n 列)組成,或者 nx1 (n 行, 1 列)組成,其中n可以是任意大小。
兩艘戰艦之間至少有乙個水平或垂直的空位分隔 - 即沒有相鄰的戰艦。
示例 :
x..x
...x
...x
在上面的甲板中有2艘戰艦。
無效樣例 :
...x
***x
...x
你不會收到這樣的無效甲板 - 因為戰艦之間至少會有乙個空位將它們分開。
高階:
你可以用一次掃瞄演算法,只使用o(1)額外空間,並且不修改甲板的值來解決這個問題嗎?
思路分析:基本方法,將矩陣複製,然後掃瞄矩陣,如果碰到了戰艦,則使用深度優先搜尋將與之相連的戰艦修改為空地。
(時間複雜度o(n2),額外空間複雜度o(n2))
class solution , , , };//左、上、右、下是個方向
//深度優先搜尋法,將與myboard[row][col]相連的戰艦修改為'.'
void dfs(vector> &myboard, int row, int col)
dfs(myboard, nextrow, nextcol);
} }int countbattleships(vector>& board)
int colsize = myboard[0].size();
if (colsize == 0)
//遍歷矩陣
==高階方法:==不難發現,如果乙個戰艦放到矩陣中,如果這是乙個橫向戰艦,那麼只需要計數它最左端的位置,如果是乙個縱向戰艦,只要計數它最上端的位置。(時間複雜度o(n2),額外空間複雜度o(1))
class solution
int colsize = board[0].size();
if (colsize == 0)
//遍歷矩陣
Leetcode 419 甲板上的戰艦
給定乙個二維的甲板,請計算其中有多少艘戰艦。戰艦用 x 表示,空位用 表示。你需要遵守以下規則 示例 x.x x x 在上面的甲板中有2艘戰艦。無效樣例 x x x 你不會收到這樣的無效甲板 因為戰艦之間至少會有乙個空位將它們分開。高階 你可以用一次掃瞄演算法,只使用o 1 額外空間,並且不修改甲板...
419 甲板上的戰艦 dfs, 沉沒戰艦
給定乙個二維的甲板,請計算其中有多少艘戰艦。戰艦用 x 表示,空位用 表示。你需要遵守以下規則 給你乙個有效的甲板,僅由戰艦或者空位組成。戰艦只能水平或者垂直放置。換句話說,戰艦只能由 1xn 1 行,n 列 組成,或者 nx1 n 行,1 列 組成,其中n可以是任意大小。兩艘戰艦之間至少有乙個水平...
近期的工作成果《帝國戰艦》
最近3個多月一直在做flash小遊戲 帝國戰艦 主要是為參加麻球flash大賽。現在大體功能基本完成,很多遊戲性的東西還沒有加入,時間不夠了。只能先把作品提交了。ai steering程式設計 一.建立機車 ai steering程式設計 二.尋找行為 http bbs.9ria.com threa...