11
11
*/
12
12
var rotate = function ( matrix ) {
13
13
var row = matrix . length ;
14
-
14
+
15
15
if ( row === 0 ) {
16
16
return ;
17
17
}
18
-
18
+
19
19
var col = matrix [ 0 ] . length ;
20
-
20
+
21
21
// swap them in diagonal
22
22
for ( var i = 0 ; i < row ; i ++ ) {
23
23
for ( var j = 0 ; j < col - i ; j ++ ) {
24
24
swap ( matrix , i , j , row - 1 - j , col - 1 - i ) ;
25
25
}
26
26
}
27
-
27
+
28
28
// swap in middle
29
29
for ( i = 0 ; i < Math . floor ( row / 2 ) ; i ++ ) {
30
30
for ( j = 0 ; j < col ; j ++ ) {
@@ -37,4 +37,37 @@ function swap(matrix, x1, y1, x2, y2) {
37
37
var tmp = matrix [ x1 ] [ y1 ] ;
38
38
matrix [ x1 ] [ y1 ] = matrix [ x2 ] [ y2 ] ;
39
39
matrix [ x2 ] [ y2 ] = tmp ;
40
- }
40
+ }
41
+
42
+ //Clearer Solution
43
+ var rotate = function ( matrix ) {
44
+ rotateColumns ( matrix ) ;
45
+ rotateEachDiagonal ( matrix ) ;
46
+ } ;
47
+
48
+ var rotateColumns = function ( matrix ) {
49
+ for ( var j = 0 ; j < matrix . length ; j ++ ) {
50
+ var low = 0 ;
51
+ var ceil = matrix . length - 1 ;
52
+ while ( low < ceil ) {
53
+ swap ( matrix , low , j , ceil , j ) ;
54
+ low ++ ;
55
+ ceil -- ;
56
+ }
57
+ }
58
+ } ;
59
+
60
+ var rotateEachDiagonal = function ( matrix ) {
61
+ for ( var i = 0 ; i < matrix . length ; i ++ ) {
62
+ for ( var j = i ; j < matrix . length ; j ++ ) {
63
+ swap ( matrix , i , j , j , i ) ;
64
+ }
65
+ }
66
+ } ;
67
+
68
+ var swap = function ( matrix , i1 , j1 , i2 , j2 ) {
69
+ var aux = matrix [ i1 ] [ j1 ] ;
70
+ matrix [ i1 ] [ j1 ] = matrix [ i2 ] [ j2 ] ;
71
+ matrix [ i2 ] [ j2 ] = aux ;
72
+ } ;
73
+
0 commit comments