m
00 01 02 03
10 11 12 13
20 21 22 23
30 31 32 33
// right = top
00 01 02 03
13
23
rotate90C(m):
// no throw for n = 0
if m == null ||
(m.length() > 0 && m.length() != m[0].length()):
throw
n = m.length()
for layer = 0, layer < n/2, layer++:
for i = layer, i < n-1 -layer, i++:
// temp = top
temp = m[layer][i]
// top = left
m[layer][i] = m[n-1-i][layer]
// left = bottom
m[n-1-i][layer] = m[n-1-layer][n-1-i]
// bottom = right
m[n-1-layer][n-1-i] = m[i][n-1-layer]
// right = temp
m[i][n-1-layer] = temp
[Hat tip to ctci]180 degrees.
rotate180(m):
// no throw for n = 0
if m == null ||
(m.length() > 0 && m.length() != m[0].length()):
throw
for layer = 0, layer < n/2, layer++:
for i = layer, i < ni -layer, i++:
// top - bottom
swap(m, layer, i, ni -layer, ni -i)
// left - right
swap(m, i, ni -layer, ni -i, layer)
No comments:
Post a Comment