当前位置:首页 > 编程笔记 > 正文
已解决

Leetcode48旋转图像

来自网友在路上 166866提问 提问时间:2023-11-06 15:25:21阅读次数: 66

最佳答案 问答题库668位专家为你答疑解惑

思路:找规律

方法一、一般辅助数组解法

行列转换,第一行变到第三列,第二行变到第二列,第三行变到第一列

matrix[row][col] = matrix[col][n-row-1]

然后复制回原数组

class Solution {public void rotate(int[][] matrix) {int n = matrix.length;int[][] matrix_new = new int[n][n];for (int i = 0; i < n; ++i) {for (int j = 0; j < n; ++j) {matrix_new[j][n - i - 1] = matrix[i][j];}}for (int i = 0; i < n; ++i) {for (int j = 0; j < n; ++j) {matrix[i][j] = matrix_new[i][j];}}}
}

方法二、对角线翻转+左右翻转

矩阵性质,可以发现对角线翻转之后就是逆时针转了九十度,左右再翻转就是顺时针转了九十度

class Solution {public void rotate(int[][] matrix) {int n = matrix.length;for(int i = 0;i<n;i++){
//翻转一半for(int j = i;j<n;j++){int temp = matrix[i][j];matrix[i][j] = matrix[j][i];matrix[j][i] = temp;}}
//翻转一半for(int i = 0;i<n/2;i++){for(int j = 0;j<n;j++){int temp = matrix[j][i];matrix[j][i] = matrix[j][n-i-1];matrix[j][n-i-1] = temp;}}}
}

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"Leetcode48旋转图像":http://eshow365.cn/6-33738-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!