Skip to content

Commit 795787b

Browse files
committed
Runtime: 100 ms (Top 33.33%) | Memory: 44.3 MB (Top 33.33%)
1 parent a704484 commit 795787b

File tree

1 file changed

+13
-12
lines changed

1 file changed

+13
-12
lines changed

scripts/algorithms/T/Transform to Chessboard/Transform to Chessboard.js

+13-12
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
1+
// Runtime: 100 ms (Top 33.33%) | Memory: 44.3 MB (Top 33.33%)
12
/**
23
* @param {number[][]} board
34
* @return {number}
45
*/
56
var movesToChessboard = function(board) {
67
const boardSize = board.length;
78
const boardSizeIsEven = boardSize % 2 === 0;
8-
9+
910
if(!canBeTransformed(board)) return -1;
10-
11+
1112
// to convert to 010101
1213
let rowSwap = 0;
1314
let colSwap = 0;
14-
15+
1516
// to convert to 101010
1617
let rowSwap2 = 0;
1718
let colSwap2 = 0;
18-
19+
1920
for(let i=0; i<boardSize; i++) {
2021
if(board[i][0] === i % 2) {
2122
rowSwap++;
@@ -28,26 +29,26 @@ var movesToChessboard = function(board) {
2829
colSwap2++;
2930
}
3031
}
31-
32+
3233
// no need to swap anything
33-
if((rowSwap + colSwap) === 0 || (rowSwap2 + colSwap2) === 0) return 0;
34-
34+
if((rowSwap + colSwap) === 0 || (rowSwap2 + colSwap2) === 0) return 0;
35+
3536
if(boardSizeIsEven) {
3637
rowSwap = Math.min(rowSwap, rowSwap2);
3738
colSwap = Math.min(colSwap, colSwap2);
3839
} else {
39-
rowSwap = rowSwap % 2 === 0 ? rowSwap : rowSwap2;
40+
rowSwap = rowSwap % 2 === 0 ? rowSwap : rowSwap2;
4041
colSwap = colSwap % 2 === 0 ? colSwap : colSwap2;
4142
}
42-
43+
4344
return (rowSwap + colSwap) / 2;
44-
45+
4546
function canBeTransformed(board) {
4647
// number of 0 and 1 should be equal
4748
let sum = board[0].reduce((a,b) => a+b);
4849
if(boardSizeIsEven && sum != boardSize/2) return false;
4950
if(!boardSizeIsEven && sum > ((boardSize + 1)/2)) return false;
50-
51+
5152
let first = board[0].join('');
5253
let opposite = board[0].map((item) => item === 1 ? 0 : 1).join('');
5354
// each row should be equal to first or opposite
@@ -68,4 +69,4 @@ var movesToChessboard = function(board) {
6869
}
6970
return Math.abs(counter[0] - counter[1]) === 1
7071
}
71-
};
72+
};

0 commit comments

Comments
 (0)