Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
For example,
Given n =
You should return the following matrix:Given n =
3,[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]Solution: 2D image rotate transformation.
public class Solution {
public int[][] generateMatrix(int n) {
int[][] results = new int[n][n];
if(n == 0) return results;
int index = 0;
int i = 0;
int layer = 0;
for(layer = 0; layer < n/2; layer++){
for(i = layer; i <= n-2-layer; i++){ //top
index++;
results[layer][i] = index;
}
for(i = layer; i <= n-2-layer; i++){ // right
index++;
results[i][n-1-layer] = index;
}
for(i = n-1-layer; i >= layer+1; i--){ // bottom
index++;
results[n-1-layer][i] = index;
}
for(i = n-1-layer; i >= layer+1; i--){ // left
index++;
results[i][layer] = index;
}
}
if(n % 2 != 0) { results[layer][layer] = n*n; }
return results;
}
}
No comments:
Post a Comment