48. 旋转图像
Posted yangbocsu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了48. 旋转图像相关的知识,希望对你有一定的参考价值。
48. 旋转图像
一、题目
给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。
你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。
二、参考代码
2.1 先主对角线翻转,然后左右对换
class Solution
public void rotate(int[][] matrix)
int n = matrix.length;
// 主对角线 翻转一次
for(int i = 0; i < n; i++)
for(int j = i+1; j < n; j++)
int tmp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = tmp;
// 左右翻转一次
for(int i = 0, j = n-1; i<=j; i++,j--)
for(int k = 0; k < n; k++)
int tmp = matrix[k][i];
matrix[k][i] = matrix[k][j];
matrix[k][j] = tmp;
2.2 先上下对换,然后副对角线翻转
class Solution
public void rotate(int[][] matrix)
int length = matrix.length;
int n = length/2;
int temp;
for (int i = 0; i < n; i++) //对称,上下交换
for (int j = 0; j < length; j++)
temp = matrix[i][j];
matrix[i][j] = matrix[length - i - 1][j];
matrix[length - i - 1][j] = temp;
for (int i = 0; i < length; i++) //对称交换
for (int j = i; j < length; j++)
temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
以上是关于48. 旋转图像的主要内容,如果未能解决你的问题,请参考以下文章