-
Notifications
You must be signed in to change notification settings - Fork 5
/
RotateMatrixElementsClockwise.java
93 lines (87 loc) · 1.69 KB
/
RotateMatrixElementsClockwise.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
/*https://practice.geeksforgeeks.org/problems/rotate-matrix-elements-clockwise2336/1*/
class Solution {
int[][] rotateMatrix(int M, int N, int Mat[][]) {
// code here
int rs = 0, re = M-1, cs = 0, ce = N-1, i, j, temp;
/* target elements to be rotated-->
$ $ $ $ $
$ # # # $
$ # # # $
$ # # # $
$ # # # $
$ $ $ $ $
*/
while (rs < re && cs < ce)
{
/* temp
|
$ # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
*/
temp = Mat[rs][cs];
/*
$ # # # #
$ # # # #
$ # # # #
$ # # # #
$ # # # #
# # # # #
*/
for (i = rs; i < re; ++i)
Mat[i][cs] = Mat[i+1][cs];
/*
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
$ $ $ $ #
*/
for (j = cs; j < ce; ++j)
Mat[re][j] = Mat[re][j+1];
/*
# # # # #
# # # # $
# # # # $
# # # # $
# # # # $
# # # # $
*/
for (i = re; i > rs; --i)
Mat[i][ce] = Mat[i-1][ce];
/*
# # $ $ $
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
*/
for (j = ce; j > cs+1; --j)
Mat[rs][j] = Mat[rs][j-1];
/*
# $ # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
*/
Mat[rs][j] = temp;
/* target elements to be rotated-->
# # # # #
# $ $ $ #
# $ # $ #
# $ # $ #
# $ $ $ #
# # # # #
*/
++rs; --re; ++cs; --ce;
}
return Mat;
}
}