网上商城网站 找什么做,学校网站建设说明,济南网站建设 历山北路,seo网站排名优化培训教程旋转图像
https://leetcode.cn/problems/rotate-image/
描述
给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地 旋转图像#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。
示例 1 输入这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。
示例 1 输入matrix [[1,2,3],[4,5,6],[7,8,9]]
输出[[7,4,1],[8,5,2],[9,6,3]]示例 2 输入matrix [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]
输出[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]提示
n matrix.length matrix[i].length1 n 20-1000 matrix[i][j] 1000
算法实现
/**Do not return anything, modify matrix in-place instead.*/
function rotate(matrix: number[][]): void {// 获取维度: nlet n matrix.length;// 垂直翻转for (let i 0, len n / 2; i len; i) {for (let j 0, tmp: number; j n; j) {// 交换同一列交换的是行[matrix[i][j], matrix[n - i - 1][j]] [matrix[n - i - 1][j], matrix[i][j]];}}// 对角线翻转for (let i 0; i n; i) {for (let j 0, tmp: number; j i; j) {// 交换交换的是行列[matrix[i][j], matrix[j][i]] [matrix[j][i], matrix[i][j]];}}
};想要旋转图像就要找到一个中心轴来作为旋转的基础在原有矩阵上操作类似于排序这样使用元素之间的交换来做这里面有一个技巧 以矩阵中间的x方向轴(中位线) 上下交换再以斜-45度对角线(前提: 以左上角为原点) 进行交换即可转换完成