题解 | #牧场重组计划#

牧场重组计划

https://www.nowcoder.com/practice/d62fe08f920249f5a078d49a60e31444

知识点:数组

将数组逆时针旋转90度,如果是使用额外的空间的话,会很好理解,但是题目中要求的是使用原地算法来操作。将数组旋转90度,可以分解为两步:

1.将数组按照中间对称反转

2.将数组按照斜对角线进行反转

完成后,即可得到旋转90度的效果。

这是一个经典的题目,第一次遇到不容易想到,属于一种比较投巧的方法。

Java题解如下:

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param matrix int整型二维数组 
     * @return int整型二维数组
     */
    public int[][] rotatePastureCounterClockwise (int[][] matrix) {
        // write code here
        int n = matrix.length;
        for(int j = 0; j < n; j++) {
            for(int i = 0; i < n / 2; i++) {
                matrix[j][i] ^= matrix[j][n - 1 - i];
                matrix[j][n - 1 - i] ^= matrix[j][i];
                matrix[j][i] ^= matrix[j][n - 1 - i];
            }
        }
        for(int i = 0; i < n; i++) {
            for(int j = 0; j < i; j++) {
                matrix[i][j] ^= matrix[j][i];
                matrix[j][i] ^= matrix[i][j];
                matrix[i][j] ^= matrix[j][i];
            }
        }
        return matrix;
    }
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务