あなたは、各セルの値は0であり、当初、n行m列の行列を与えます。
そうでなければインデックス配列インデックス、インデックス[I] = [RI、CI] CIおよびRI示す指定された行と(0から番号付け)カラム。
あなたは、与えられた行と列プラス1のすべてのセルの各々の対[RI、CI]の値を確認する必要があります。
してください指定されたすべての増分リターン行列「奇数セルの値」の数を実行した後のインデックス。
例1:
入力:N = 2、M = 3 、インデックス= [0,1]、[1,1]
出力:6
説明:マトリックスは[0,0,0]、[0,0,0の始まりであります]]。
最初の増分の後に得た[1,2,1]、[0,1,0]]。
最終的なマトリックスは、[1,3,1]、[1,3,1]、奇数6を有しています。
例2:
入力:N = 2、M = 2 、インデックス= [1,1]、[0,0]
出力:0
説明:最終的なマトリックスである[2,2]、[2,2]、全く存在しません奇数。
ヒント:
1 <= N <= 50
1 <= M <= 50
1 <= indices.length <= 100
0 <=指数[I] [0] <N
、0 <=指数[I] [1] <M
アイデア:
、各位置の値を算出する2次元配列を作成
指数横断
行==インデックスを[I] [0] 、 + = 1;
カラム==インデックスの数[I] [1] 、 + = 1;
最後トラバーサル分析%2 == 0、カウント数
ソリューション:
class Solution {
public int oddCells(int n, int m, int[][] indices) {
int[][] res=new int[n][m];
for(int[] indice: indices){
for(int i=0; i<m; i++){
res[indice[0]][i]+=1;
}
for(int j=0; j<n; j++){
res[j][indice[1]]+=1;
}
}
int count=0;
for(int i=0; i<res.length; i++){
for(int j=0; j<res[i].length; j++){
count+=res[i][j]%2==0?0:1;
}
}
return count;
}
}