Rotate an N * N matrix clockwise 90 degrees.
Assumptions
- The matrix is not null and N > = 0
Examples
{ {1, 2, 3}
{8, 9, 4},
{7, 6, 5} }
after rotation is
{ {7, 8, 1}
{6, 9, 2},
{5, 4, 3} }
Solution: 用start, end标记边界,注意index关系
public void rotate(int[][] matrix) {
int start = 0, end = matrix.length - 1;
while (start < end) {
//注意i从0到end - start
for (int i = 0; i < end - start; i++) {
int temp = matrix[start][start + i];
matrix[start][start + i] = matrix[end - i][start];
matrix[end - i][start] = matrix[end][end - i];
matrix[end][end - i] = matrix[start + i][end];
matrix[start + i][end] = temp;
}
start++;
end--;
}
}