昨天没做完今天先把螺旋矩阵补上。
59.螺旋矩阵II :
拐点条件保证一定的逻辑性,可以让代码少很多判断条件。
int** generateMatrix(int n, int* returnSize, int** returnColumnSizes) {
*returnSize = n;
*returnColumnSizes = (int*)malloc(sizeof(int)*n);
int** ans = (int**)malloc(sizeof(int*)*n);
int i,j;
for(i = 0; i < n; i++) {
ans[i] = (int*)malloc(sizeof(int)*n);
(*returnColumnSizes)[i] = n;
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
ans[i][j] = 0;
}
}
int x = 0;
int y = 0;
int num = 1;//数值
int circ=n/2;//圈数
int count = 1;//缩进
while(circ){
int i = x;
int j = y;
for(;j<n-count;j++) ans[i][j] = num++;
for(;i<n-count;i++) ans[i][j] = num++;
for(;j>y;j--) ans[i][j] = num++;
for(;i>x;i--) ans[i][j] = num++;
y++;
x++;
circ--;
count++;
}
if(n%2 == 1) ans[n/2][n/2] = num;
return ans;
}
第一次做螺旋矩阵,这个简化形状直接记圈眼前一亮。