Skip to content

Commit fc7223c

Browse files
authored
Added solution for 2482
1 parent 8cd8562 commit fc7223c

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
impl Solution {
2+
// Simple brute-force approach. Generate an output grid of same size. Maintain 4 vectors: onesRow, zerosRow, onesCol, zerosCol to maintain counts of 1s and 0s for each row and column. Then iterate through output grid and update the scores by calculating based on values from the 4 vectors
3+
pub fn ones_minus_zeros(grid: Vec<Vec<i32>>) -> Vec<Vec<i32>> {
4+
let mut rowsCount = grid.len();
5+
let mut colsCount = grid[0].len();
6+
let mut output = Vec::new();
7+
for i in 0..rowsCount {
8+
output.push(Vec::new());
9+
for j in 0..colsCount {
10+
output[i].push(0);
11+
}
12+
}
13+
14+
let mut onesRow = vec![0; rowsCount];
15+
let mut zerosRow = vec![0; rowsCount];
16+
let mut onesCol = vec![0; colsCount];
17+
let mut zerosCol = vec![0; colsCount];
18+
19+
for (row_num, row) in grid.iter().enumerate() {
20+
for (col_num, cell) in row.iter().enumerate() {
21+
if *cell == 1 {
22+
onesRow[row_num] += 1;
23+
onesCol[col_num] += 1;
24+
} else {
25+
zerosRow[row_num] += 1;
26+
zerosCol[col_num] += 1;
27+
}
28+
}
29+
}
30+
31+
for i in 0..rowsCount {
32+
for j in 0..colsCount {
33+
output[i][j] = onesRow[i] + onesCol[j] - zerosRow[i] - zerosCol[j];
34+
}
35+
}
36+
37+
return output;
38+
}
39+
}

0 commit comments

Comments
 (0)