题目
给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,
将图像旋转 90 度。不占用额外内存空间能否做到?
示例
给定 矩阵 [ [1,2,3], [4,5,6], [7,8,9] ], 原地旋转输入矩阵,使其变为: [ [7,4,1], [8,5,2], [9,6,3] ]
思路:先将其写斜对角线翻折,再对每行以中点为中心翻折
[1,2,3], [1,4,7], [7,4,1], [4,5,6], ===> [2,5,8], ===> [8,5,2], [7,8,9] [3,6,9] [9,6,3]
代码
public void rotate(int[][] matrix) { for(int i=0; i<matrix.length; i++){ for(int j=i+1; j<matrix[0].length; j++){ int t = matrix[i][j]; matrix[i][j] = matrix[j][i]; matrix[j][i] = t; } } int n = matrix.length; int mid = n/2; for(int i=0; i<matrix.length; i++){ for(int j=0; j<mid; j++){ int t = matrix[i][j]; matrix[i][j] = matrix[i][n-j-1]; matrix[i][n-j-1] = t; } } }
大家如果感兴趣可以前去手搓
本分类只用作个人记录,大佬轻喷.
来源:https://www.cnblogs.com/xiaofff/p/12653434.html