leetcode習題集 130 被圍繞的區域

2021-09-24 17:04:56 字數 1298 閱讀 1438

給定乙個二維的矩陣,包含 『x』 和 『o』(字母 o)。

找到所有被 『x』 圍繞的區域,並將這些區域裡所有的 『o』 用 『x』 填充。

示例:x x x x

x o o x

x x o x

x o x x

執行你的函式後,矩陣變為:

x x x x

x x x x

x x x x

x o x x

解釋:被圍繞的區間不會存在於邊界上,換句話說,任何邊界上的 『o』 都不會被填充為 『x』。 任何不在邊界上,或不與邊界上的 『o』 相連的 『o』 最終都會被填充為 『x』。如果兩個元素在水平或垂直方向相鄰,則稱它們是「相連」的。

public

class

p130

int m = board.length;

int n = board[0]

.length;

int[

] flag =

newint

[m][n]

;for

(int i=

0;i(flag[i]

[n-1]!=

1&&board[i]

[n-1]==

'o')

}for

(int i=

0;i(flag[m-1]

[i]!=

1&&board[m-1]

[i]==

'o')

}for

(int i =

0;i}}

private

void

mark

(char

board,

int i,

int j,

int[

] flag)

if(j+

1.length&&flag[i]

[j+1]!=

1&&board[i]

[j+1]==

'o')

if(i+

1[j]!=

1&&board[i+1]

[j]==

'o')

if(j-

1>=

0&&flag[i]

[j-1]!=

1&&board[i]

[j-1]==

'o')}}

}

思路:

從邊界上的』o』開始查詢,找到所有與之相連線的』o』

遞迴回溯的找到其他項鍊的』o』,並且標記

所有未被標記的地方均為』x』或者被包圍的』o』

Leetcode習題集 鍊錶

這裡記錄一些我刷題的思路方便之後進行複習重溫,同時也方便進行新增 p141 環形鍊錶 class solution listnode reverse listnode head return pre 使用翻轉鍊錶,判斷返回的指標與傳進的指標是否相同,時間複雜度是o n 可能 空間複雜度是o 1 cl...

leetcode習題集 54 螺旋矩陣

給定乙個包含 m x n 個元素的矩陣 m 行,n 列 請按照順時針螺旋順序,返回矩陣中的所有元素。示例 1 輸入 1,2,3 4,5,6 7,8,9 輸出 1,2,3,6,9,8,7,4,5 示例 2 輸入 1,2,3,4 5,6,7,8 9,10,11,12 輸出 1,2,3,4,8,12,11...

leetcode習題集 56 合併區間

給出乙個區間的集合,請合併所有重疊的區間。示例 1 輸入 1,3 2,6 8,10 15,18 輸出 1,6 8,10 15,18 解釋 區間 1,3 和 2,6 重疊,將它們合併為 1,6 示例 2 輸入 1,4 4,5 輸出 1,5 解釋 區間 1,4 和 4,5 可被視為重疊區間。public...