螺旋数组,其实就是找出数学规律。
public class Solution {
//Time: O(n^2) Space: O(n^2)
public int[][] generateMatrix(int n) {
int count = 0;
int[][] matrix = new int[n][n];
generate(matrix, n, count, 0);
return matrix;
}
private void generate(int[][] matrix, int size, int count, int offset) {
if (count == matrix.length * matrix.length) {
return;
}
for (int i = 0; i < size; i++) {
matrix[offset][offset + i] = ++count;
}
for (int i = 1; i < size; i++) {
matrix[offset + i][offset + size - 1] = ++count;
}
for (int i = size - 2; i >= 0; i--) {
matrix[offset + size - 1][offset + i] = ++count;
}
for (int i = size - 2; i > 0; i--) {
matrix[offset + i][offset] = ++count;
}
generate(matrix, size - 2, count, offset + 1);
}
}
No comments:
Post a Comment