-
Notifications
You must be signed in to change notification settings - Fork 0
/
1252. 奇数值单元格的数目.js
59 lines (57 loc) · 1.43 KB
/
1252. 奇数值单元格的数目.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/**
* @param {number} m
* @param {number} n
* @param {number[][]} indices
* @return {number}
*/
var oddCells = function(m, n, indices) {
// 模拟
// const matrix=new Array(m).fill(0).map(i=>new Array(n).fill(0))
// for(let indice of indices){
// const [r,c]=indice
// for(let i=0;i<n;i++){
// matrix[r][i]++
// }
// for(let i=0;i<m;i++){
// matrix[i][c]++
// }
// }
// let ret=0
// for(let i=0;i<m;i++){
// for(let j=0;j<n;j++){
// if(matrix[i][j]%2===1) ret++
// }
// }
// return ret
// 空间优化
// const rows=new Array(m).fill(0)
// const columns=new Array(n).fill(0)
// indices.map(i=>i[0]).forEach(r=>rows[r]++)
// indices.map(i=>i[1]).forEach(c=>columns[c]++)
// let ret=0
// for(let i=0;i<m;i++){
// for(let j=0;j<n;j++){
// if((rows[i]+columns[j])%2===1) ret++
// }
// }
// return ret
// 计数优化
const rows=new Array(m).fill(0)
const columns=new Array(n).fill(0)
indices.map(i=>i[0]).forEach(r=>rows[r]++)
indices.map(i=>i[1]).forEach(c=>columns[c]++)
// 奇数+偶数=奇数
let ret=0
let colOdd=0
for(let i=0;i<n;i++){
if(columns[i]%2===1) colOdd++
}
for(let i=0;i<m;i++){
if(rows[i]%2===0){
ret+=colOdd
}else{
ret+=n-colOdd
}
}
return ret
};