ゴールデンプログラマのインタビュー - フェイス質問01.08零行列

トピック:

アルゴリズム、M×Nの行列要素である0の製造は、それは、行と列クリアされます。

 

例1:

入力

[ [1,1,1]、
[1,0,1]、
[1,1,1]
]
出力

[ [1,0,1]、
[0,0,0]、
[0 、1]
]
実施例2:

入力

[ [0,1,2,0]、
[3,4,5,2]、
[1,3,1,5]
]
出力

[ [0,0,0,0]、
[0,4 、5,0]、
[0,3,1,0]
]

分析:

最初の行0を検索し、そうでない場合、同じ時間が必要で、各横断行の後に空行を格納するために、このラインのニーズを直接クリアすることができ、その後標線に転用クリアします。

手順:

クラスソリューション{
     公共 ボイド setZeroes(INT [] []行列){
         int型の行= -1 ブール delr = ;
        以下のためにINT I 0 =; I <matrix.length; ++ I){
             ためINT J = 0; J <行列[I] .LENGTH; ++ J){
                 場合(行列[I] [J] == 0 ){  = I。
                    休憩; 
                } 
            } 
            もし(行!= -1 休憩; 
        } 
        場合(行が== -1 を返します以下のためにINT I 0 =; I <matrix.length; ++ I){
             ためINT J = 0; J <行列[I] .LENGTH; ++ J){
                 場合(行列[I] [J] == 0 ){ 
                    delr = 
                    行列[行] [j] = 0 ; 
                } 
            } 
            もし(i =行&&!delr){
                 ためのint型のk = 0; K <行列[I] .LENGTH; ++K){ 
                    行列[I] [K] = 0 ; 
                } 
            } 
            delr = 
        } 
        のためのINT I = 0、I <行列[行] .LENGTH; ++ I){
             場合(行列[行] [I] == 0 ){
                 ためのint型 J = 0; J <matrix.length; + + J){ 
                    行列[J] [I] = 0 ; 
                } 
            } { 
                行列[行] [I] = 0 ; 
            }  
        }
    } 
}

 

おすすめ

転載: www.cnblogs.com/silentteller/p/12395962.html