|
1 | 1 | class Solution {
|
2 |
| - public int matrixScore(int[][] A) { |
3 |
| - for (int i=0; i<A.length; i++) { |
4 |
| - int actualSum = getDecimalValue(A[i], false); |
5 |
| - int toggledSum = getDecimalValue(A[i], true); |
6 |
| - |
7 |
| - if (toggledSum > actualSum) { |
8 |
| - for (int j=0; j<A[i].length; j++) { |
9 |
| - A[i][j] ^= 1; |
| 2 | + public int matrixScore(int[][] grid) { |
| 3 | + int rows = grid.length; |
| 4 | + int cols = grid[0].length; |
| 5 | + for (int i = 0; i < rows; i++) { |
| 6 | + if (grid[i][0] == 0) { |
| 7 | + for (int j = 0; j < cols; j++) { |
| 8 | + grid[i][j] = 1 - grid[i][j]; |
10 | 9 | }
|
11 | 10 | }
|
12 | 11 | }
|
13 |
| - |
14 |
| - for (int i=0; i<A[0].length; i++) { |
15 |
| - int numZeroes = 0; |
16 |
| - int numOnes = 0; |
17 |
| - |
18 |
| - for (int j=0; j<A.length; j++) { |
19 |
| - if (A[j][i] == 1 ) { |
20 |
| - numOnes++; |
21 |
| - } |
22 |
| - else { |
23 |
| - numZeroes++; |
| 12 | + for (int j = 1; j < cols; j++) { |
| 13 | + int countZero = 0; |
| 14 | + for (int[] row : grid) { |
| 15 | + if (row[j] == 0) { |
| 16 | + countZero++; |
24 | 17 | }
|
25 | 18 | }
|
26 |
| - |
27 |
| - if (numZeroes > numOnes) { |
28 |
| - for (int j=0; j<A.length; j++) { |
29 |
| - A[j][i] ^= 1; |
| 19 | + if(countZero > rows-countZero) { |
| 20 | + for(int i = 0; i < rows; i++) { |
| 21 | + grid[i][j] = 1 - grid[i][j]; |
30 | 22 | }
|
31 | 23 | }
|
32 | 24 | }
|
33 |
| - |
34 |
| - int maxSum = 0; |
35 |
| - for (int[] arr : A) { |
36 |
| - maxSum += getDecimalValue(arr, false); |
37 |
| - } |
38 |
| - |
39 |
| - return maxSum; |
40 |
| - } |
41 |
| - |
42 |
| - private int getDecimalValue(int[] arr, boolean isToggled) { |
43 |
| - int sum = 0; |
44 |
| - int pow = 0; |
45 |
| - |
46 |
| - for (int i=arr.length-1; i>=0; i--) { |
47 |
| - if (isToggled) { |
48 |
| - sum += Math.pow(2, pow) * (arr[i] ^ 1); |
49 |
| - } |
50 |
| - else { |
51 |
| - sum += Math.pow(2, pow) * arr[i]; |
| 25 | + int score = 0; |
| 26 | + for (int[] row : grid) { |
| 27 | + for (int j = 0; j < cols; j++) { |
| 28 | + score += row[j] << (cols - j - 1); |
52 | 29 | }
|
53 |
| - |
54 |
| - pow++; |
55 | 30 | }
|
56 |
| - |
57 |
| - return sum; |
| 31 | + return score; |
58 | 32 | }
|
59 | 33 | }
|
0 commit comments