生命のleetcode-289-ゲーム

 

 ソリューション:O(MN)O(MN))Javaのバージョン

クラスソリューション{
     公共 ボイド gameOfLife(INT [] []基板){
         INT []隣人= {0,1、-1 }。
        int型の列= board.length。
        INT COLS =ボード[0 ] .LENGTH。
        INT [] []コピーボード= 新しい int型[行] [colsの]。
        INTの列= 0、行<行、行++ ){
             ためのint型 COL = 0、COL <COLS; COL ++ ){ 
                原稿台[行] [COL] = ボード[行] [COL]。
            } 
        }
        INTの列= 0、行<行、行++ ){
             ためINT COL = 0、COL <COLS; COL ++ ){
                 int型 liveNeighbors = 0 以下のためにINT I = 0; I <3; I ++ ){
                     ためINT J = 0; J <3; J ++ ){
                         もし、((隣人[I] == 0 &&ネイバー[j] == 0] )){
                             INT R =(行+ 隣人[I])。
                            INT C =(COL + 隣人[J])。
                            もし((R <行&& R> = 0)&&(C <COLS && C> = 0)&&(原稿台[R] [C] == 1 )){ 
                                liveNeighbors + = 1 ; 
                            } 
                        } 
                    } 
                } 
                もし、((原稿台[行] [COL] == 1)&&(liveNeighbors <2 || liveNeighbors> 3 )){ 
                    ボード[行] [COL] = 0 ; 
                } 
                であれば(原稿台[行] [COL] == 0 && liveNeighbors == 3 ){ 
                    ボード[行] [COL] = 1 

方法2:O(MN)O(1)

クラスソリューション{
     公共 ボイド gameOfLife(INT [] []基板){
         INT []隣人= {0,1、-1 }。
        int型の列= board.length。
        INT COLS =ボード[0 ] .LENGTH。
        
        INTの列= 0、行<行、行++ ){
             ためINT COL = 0、COL <COLS; COL ++ ){
                 int型 liveNeighbors = 0 intは I ++; I <3 I = 0 {)
                     のためのINTJ = 0; J <3; J ++ ){
                         もし、((隣人[I] == 0 &&ネイバー[j] == 0] )){
                             int型、R =(行+ 隣人[I])。
                            INT C =(COL + 隣人[J])。
                            もし((R <行&& R> = 0)&&(C <COLS && C> = 0)&&(Math.abs(ボード[R] [C])== 1 )){ 
                                liveNeighbors + = 1 ; 
                            } 
                        } 
                    } 
                } 
                もし、((ボード[行] [COL] == 1)&&(liveNeighbors <2 || liveNeighbors>
                    基板[行] [COL] = -1 
                } 
                もし(ボード[行] [COL] == 0 && liveNeighbors == 3 ){ 
                    ボード[行] [COL] = 2 ; 
                } 
            } 
        } 
        
        のためのint型の列= 0、行<行、行++ ){
             ためのint型 COL = 0、COL <COLS; COL ++ ){
                 場合(ボード[行] [COL]> 0 ){ 
                    ボード[行] [COL ] = 1 
                } { 
                    ボード[行] [COL] = 0; 
                } 

            } 
        } 
    } 
}

 

おすすめ

転載: www.cnblogs.com/oldby/p/12620843.html