题解 | #牧场重组计划#
牧场重组计划
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;
}
}
基恩士成长空间 421人发布