Steward
分享是一種喜悅、更是一種幸福
程式語言 - LeetCode - C - 54. Spiral Matrix
題目:

解答:
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* spiralOrder(int** matrix, int matrixSize, int* matrixColSize, int* returnSize)
{
int i = 0;
int t = 0;
int b = matrixSize - 1;
int l = 0;
int r = matrixColSize[0] - 1;
int r_cnt = 0;
int* r_buf = calloc(matrixSize * matrixColSize[0], sizeof(int));
while (t <= b && l <= r) {
for (i = l; i <= r; ++i) {
r_buf[r_cnt++] = matrix[t][i];
}
t += 1;
for (i = t; i <= b; ++i) {
r_buf[r_cnt++] = matrix[i][r];
}
r -= 1;
if (t <= b) {
for (i = r; i >= l; --i) {
r_buf[r_cnt++] = matrix[b][i];
}
b -= 1;
}
if (l <= r) {
for (i = b; i >= t; --i) {
r_buf[r_cnt++] = matrix[i][l];
}
l += 1;
}
}
*returnSize = r_cnt;
return r_buf;
}