再帰アルゴリズムはとてもきれいでした
1 / ** 2 重リンクリストのための*の定義。 3 *パブリッククラスListNode { 4 * INTヴァル。 5 * ListNode次。 6 * ListNode(INT X){ヴァル= X。} 7 *} 8 * / 9 クラスソリューション{ 10 静的 INT エリア、列、行、TEMP; 11 静的 INT [] []グリッド。 12 静的 INT [] [] DXY = {{0,1}、{1,0}、{0、-1}、{ - 1,0}}。// 四联通分量 13の 14 プライベート 無効 DFS(int型 I、int型J){ 15 TEMP ++ ; 16 グリッド[I] [J] = 0; // 計算島ブロックを削除する 17。 ために(int型 K = 0; K <4; K ++ ){ 18が INT X = I + DXY [K] [0]、Y = J + DXY [K] [1 ]; 19 IF(X> = 0 && X <COI && Y> = 0 && Y <行&&グリッド[X] [Y] == 1 )DFS(X、Y); 20である } 21のISは } 22は、 23である 公共 INT maxAreaOfIsland(INT [] []グリッド){ 24個の // 最初のグローバル変数 25 面積= 0 ; 26である COI = grid.length; 27 =グリッドの行[0 ] .LENGTH; 28 この .grid = グリッド; 29 // 入口ループ 30 のために(INT I = 0;私は<grid.lengthは、I ++ ){ 31である ため(INT J = 0; J <グリッド[ 0] .LENGTH; J ++ ){ 32 IF(グリッド[I] [J] == 1){ // 33が TEMP = 0; // 初期領域の設定値 34は、 DFS(I、J); // 再帰検索 35 IF(領域<TEMP)面積= TEMP; // 島ブロックに島は、記録領域の値が比較された 36 } 37 } 38 } 39 リターンエリア。 40 } 41 }