Skip to content

Commit 93c9224

Browse files
authored
Create 861. Score After Flipping Matrix (#477)
2 parents 0cc03dc + 2cc1122 commit 93c9224

File tree

1 file changed

+97
-0
lines changed

1 file changed

+97
-0
lines changed

861. Score After Flipping Matrix

+97
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
class Solution {
2+
public:
3+
void flip_col(int col , vector<vector<int>> &grid , int n)
4+
{
5+
for(int row = 0 ; row < n ; row++)
6+
{
7+
if(grid[row][col] == 0)
8+
{
9+
grid[row][col] = 1;
10+
}
11+
else
12+
{
13+
grid[row][col] = 0;
14+
}
15+
}
16+
}
17+
void flip_row(int row , vector<vector<int>> &grid , int m)
18+
{
19+
for(int col = 0 ; col < m ; col++)
20+
{
21+
if(grid[row][col] == 0)
22+
{
23+
grid[row][col] = 1;
24+
}
25+
else
26+
{
27+
grid[row][col] = 0;
28+
}
29+
}
30+
}
31+
32+
int value(vector<int> &temp)
33+
{
34+
int n = temp.size();
35+
int val = 1;
36+
int ans = 0;
37+
38+
for(int i = n-1 ; i >= 0 ; i--)
39+
{
40+
int bit = temp[i];
41+
42+
ans += (bit * val);
43+
44+
val = (val << 1);
45+
}
46+
47+
return ans;
48+
}
49+
50+
int matrixScore(vector<vector<int>>& grid) {
51+
int n = grid.size();
52+
int m = grid[0].size();
53+
54+
// First focus on each row -> if starting element is 0 => Flip whole row.
55+
for(int row = 0 ; row < n ; row++)
56+
{
57+
if(grid[row][0] == 0)
58+
{
59+
flip_row(row , grid , m);
60+
}
61+
}
62+
63+
// focus on each column -> if number of zeros > number of 1 => Flip Whole column.
64+
for(int col = 0 ; col < m ; col++)
65+
{
66+
int zeros = 0 , ones = 0;
67+
68+
for(int row = 0 ; row < n ; row++)
69+
{
70+
if(grid[row][col] == 0)
71+
{
72+
zeros++;
73+
}
74+
else
75+
{
76+
ones++;
77+
}
78+
}
79+
80+
if(zeros > ones)
81+
{
82+
flip_col(col , grid , n);
83+
}
84+
}
85+
86+
87+
// now Find the integer number for each row and add it to answer.
88+
int ans = 0;
89+
90+
for(int i = 0 ; i < n ; i++)
91+
{
92+
ans += value(grid[i]);
93+
}
94+
95+
return ans;
96+
}
97+
};

0 commit comments

Comments
 (0)