题解 | #牧场重组计划#
牧场重组计划
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; } }