Problem: 59. 螺旋矩阵 II
思路
找对循环不变量
每一条边取左开右闭
用变量记录开始start,和边结束offset
复杂度
- 时间复杂度:
O ( n 2 ) O(n^2) O(n2)
遍历二维数组的时间
- 空间复杂度:
O ( 1 ) O(1) O(1)
Code
class Solution {
public int[][] generateMatrix(int n) {
int[][] arr = new int[n][n];
int count = 1;
int loop = n/2;
int start = 0;
int offset = 1;
int i,j;
while(loop-- != 0){
for(j = start;j < n - offset;j++){
arr[start][j] = count++;
}
for(i = start;i < n - offset;i++){
arr[i][j] = count++;
}
for(;j >= offset;j--){
arr[i][j] = count++;
}
for(;i >= offset;i--){
arr[i][j] = count++;
}
start++;
offset++;
}
if(n % 2 != 0){
arr[n/2][n/2] = count;
}
return arr;
}
}