A.每日一题:48. 旋转图像

A.每日一题:48. 旋转图像 题目链接48. 旋转图像中等算法原理解法转置行翻转旋转转置以主对角线为基准上方元素和对应下方元素交换( i , j )位置元素↔( j , i )位置元素行翻转把每一行翻转( i , j )位置元素↔( j , n - 1 - i )位置元素拿示例1举例写法一两次for循环0ms击败100.00%时间复杂度O(N²)①先转置将主对角线下方元素与对角线上方对应元素交换②再行翻转将每行左半边元素与右半边对应元素交换写法二一次for循环0ms击败100.00%时间复杂度O(N²)也可以将两个for循环合并成一个将转置时的遍历顺序调整为遍历主对角线上方元素这样每行遍历结束后该行元素再也用不到了可直接进行行翻转Java代码class Solution { //写法一两个for循环 public void rotate(int[][] matrix) { int nmatrix.length; //转置 for(int i0;in;i){ for(int j0;ji;j){ int tmatrix[i][j]; matrix[i][j]matrix[j][i]; matrix[j][i]t; } } //行翻转 for(int[] row:matrix){ for(int i0;in/2;i){ int trow[i]; row[i]row[n-1-i]; row[n-1-i]t; } } } }class Solution { //写法二一个for循环 public void rotate(int[][] matrix) { int nmatrix.length; for(int i0;in;i){ int[] rowmatrix[i]; //转置调整为遍历主对角线上方元素 for(int ji1;jn;j){ int tmatrix[i][j]; matrix[i][j]matrix[j][i]; matrix[j][i]t; } //行翻转 for(int j0;jn/2;j){ int trow[j]; row[j]row[n-1-j]; row[n-1-j]t; } } } }