LeetCode 甲板上的戰艦

2021-09-13 10:24:49 字數 1510 閱讀 9088

給定乙個二維的甲板, 請計算其中有多少艘戰艦。 戰艦用 '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...