1
/**
2
* @param {number} upper
3
* @param {number} lower
4
* @param {number[]} colsum
5
* @return {number[][]}
6
*/
7
var reconstructMatrix = function (upper, lower, colsum) {
8
let dp = new Array(2);
9
for (let i = 0; i < dp.length; i++) {
10
dp[i] = new Array(colsum.length);
11
}
12
let first = upper;
13
let second = lower;
14
let upsum = 0;
15
let losum = 0;
16

17
for (let i = 0; i < colsum.length; i++) {
18
if (colsum[i] === 2) {
19
dp[0][i] = 1;
20
dp[1][i] = 1;
21
upsum++;
22
losum++;
23
} else if (colsum[i] === 1) {
24
if (lower < upper) {
25
dp[0][i] = 1;
26
dp[1][i] = 0;
27
upper--;
28
upsum++;
29
} else {
30
dp[0][i] = 0;
31
dp[1][i] = 1;
32
lower--;
33
losum++;
34
}
35
} else if (colsum[i] === 0) {
36
dp[0][i] = 0;
37
dp[1][i] = 0;
38
} else {
39
return [];
40
}
41
}
42
if (losum !== second || upsum !== first) return [];
43
return dp;
44
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0