forked from upupming/algorithm
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path5256.cpp
32 lines (31 loc) · 1005 Bytes
/
5256.cpp
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
class Solution {
public:
vector<vector<int>> reconstructMatrix(int upper, int lower, vector<int>& colsum) {
int n = colsum.size(), sum = 0, sum0 = 0, sum1 = 0;
vector<int> r0(n), r1(n);
for (int i = 0; i < n; i++) {
sum += colsum[i];
if (colsum[i] == 2) {
r0[i] = r1[i] = 1;
sum0 += 1;
sum1 += 1;
} else if (colsum[i] == 2) {
// r0[i] = r1[i] = 0; not necesssary
}
}
if (sum != upper + lower || sum0 > upper || sum1 > lower) return vector<vector<int>>(0, vector<int>(0));
for (int i = 0; i < n; i++) {
if (colsum[i] == 1) {
if (sum0 != upper) {
r0[i] = 1;
sum0 += 1;
} else {
r1[i] += 1;
}
}
}
vector<vector<int>> v;
v.push_back(r0);v.push_back(r1);
return v;
}
};