旋转图像算法:给定一个n×n的二维矩阵,将它顺时针旋转90°
例如:
输入:
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
输出:
[7, 4, 1]
[8, 5, 2]
[9, 6, 3]
输入:
[1, 2, 3, 4]
[5, 6, 7, 8]
[9, 10, 11, 12]
[13, 14, 15, 16]
输出:
[13, 9, 5, 1]
[14, 10, 6, 2]
[15, 11, 7, 3]
[16, 12, 8, 4]
思路分析:
1.显然采用二维数组解题,这里用1~9共9个数字的矩阵举例,进行遍历
2.首先在输入中,123在二维数组的位置分别为[0][0]
,[0][1]
,[0][2]
3.其次在输出中,123在二维数组的位置分别为[0][2]
,[1][2]
,[2][2]
4.数组遍历外循环i=0时,temp[j][3-0-i]=matrix[i][j],j取值0~2,确定3个数
5.数组遍历外循环i=1时,temp[j][3-0-i]=matrix[i][j],j取值0~2,确定3个数
6.数组遍历外循环i=2时,temp[j][3-0-i]=matrix[i][j],j取值0~2,确定3个数
7.这样规律就出来了
代码片如下
public static int[][] rotate(int[][] matrix) {
int len=matrix.length;
int[][] temp = new int[len][len];
for (int i = 0; i < len; i