From 79a9c52fa923fc78074d88463449a8b7f95ca3ef Mon Sep 17 00:00:00 2001 From: Steve Lee Date: Tue, 26 Dec 2017 01:33:40 +0800 Subject: update leetcode solution --- Computer_Science/leetcode/59-spiral_matrix_II.c | 34 +++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 Computer_Science/leetcode/59-spiral_matrix_II.c (limited to 'Computer_Science/leetcode/59-spiral_matrix_II.c') diff --git a/Computer_Science/leetcode/59-spiral_matrix_II.c b/Computer_Science/leetcode/59-spiral_matrix_II.c new file mode 100644 index 0000000..27b96bb --- /dev/null +++ b/Computer_Science/leetcode/59-spiral_matrix_II.c @@ -0,0 +1,34 @@ +/** + * Return an array of arrays. + * Note: The returned array must be malloced, assume caller calls free(). + */ +int** generateMatrix(int n) { + int **matrix = malloc(sizeof(int *) * n); + int offset = 0; + int maxOffset = n / 2 + 1; + int index = 1; + int i; + + for(i = 0; i < n; i++) + *(matrix + i) = malloc(sizeof(int) * n); + + for(offset = 0; offset < maxOffset; offset++, n -= 2) { + if(n == 0) + break; + else if(n == 1) { + matrix[offset][offset] = index++; + break; + } else { + for(i = 0; i < n; i++) + matrix[offset][offset + i] = index++; + for(i = 1; i < n; i++) + matrix[offset + i][offset + n - 1] = index++; + for(i = 1; i < n; i++) + matrix[offset + n - 1][offset + n - 1 - i] = index++; + for(i = 1; i < n - 1; i++) + matrix[offset + n - 1 - i][offset] = index++; + } + } + + return matrix; +} -- cgit v1.2.3