自学内容网 自学内容网

Q48反转矩阵

思路

矩阵的题要么一种顺序遍历,要么反转,可能是先左右再上下,然后再转置啥的

注意两个位置的交换

出错

需要先转置,然后每一行再反转

出错的地方,转置
错误代码

 for (int i = 0; i < row; i++) {
            for (int j = 0; j < col; j++) { //错在j=0
                int tmp = matrix[i][j];
                matrix[i][j] = matrix[j][i];
                matrix[j][i] = tmp;
            }
        }

正确代码

 for (int i = 0; i < row; i++) {
            for (int j = i; j < col; j++) {
                int tmp = matrix[i][j];
                matrix[i][j] = matrix[j][i];
                matrix[j][i] = tmp;
            }
        }

相当于反转完又反转回去了

代码

class Solution {
   public void rotate(int[][] matrix) {
        // 先转置
        int row = matrix.length;
        int col = matrix[0].length;
        for (int i = 0; i < row; i++) {
            for (int j = i; j < col; j++) {
                int tmp = matrix[i][j];
                matrix[i][j] = matrix[j][i];
                matrix[j][i] = tmp;
            }
        }
         for (int i = 0; i < row; i++) {
            for (int j = i; j < col; j++) {
                System.out.print(matrix[i][j] + " ");
            }
            System.out.println();
        }
        for (int i = 0; i < row; i++) {
            int left = 0, right =col-1;
            while (left < right ){
                int tmp = matrix[i][left];
                matrix[i][left] = matrix[i][right];
                matrix[i][right] = tmp;
                left++;
                right--;
            }
        }
    }
}

原文地址:https://blog.csdn.net/weixin_44554979/article/details/142351964

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!