48. Rotate Image
对数组进行旋转,顺时针旋转90度的情况,
比如下面的该种情况
solution_1
分为两步的情况
首先是第一步的情况,先交换逆转行的情况,然后再 array[i][j] 和array[j][i] 进行对调即可
代码
void rotate(vector<vector<int> > &matrix) {
reverse(matrix.begin(), matrix.end());
for (int i = 0; i < matrix.size(); ++i) {
for (int j = i + 1; j < matrix[i].size(); ++j)
swap(matrix[i][j], matrix[j][i]);
}
}
java 版本, 难点机会在于如何逆转二维数组,其实是一样的情况进行逆
public class RotateImage {
public void solution_1(int [][] array)
{
if(array==null || array.length==0|| array[0].length=0) return;
int n =array.length;
helper(array);
for(int i=0;i<n;i++){
for(int j=0;j<i;j++){
int tmp = array[i][j];
array[i][j]= array[j][i];
array[j][i] = tmp;
}
}
}
//下面helper的空间复杂度为O(N)
private void helper(int [][] array){
int n= array.length;
int [] tmp = new int[n];
for(int i=0;i<n/2;i++){
//保存下来该种情况
tmp= array[i];
array[i] = array[n-i-1];
array[n-i-1] =tmp;
}
}
}
逆时旋转90度
有如下同样度思路和方法
solution_2
利用坐标关系解决