aboutsummaryrefslogtreecommitdiff
path: root/Computer_Science/leetcode/59-spiral_matrix_II.c
diff options
context:
space:
mode:
authorSteve Lee <me@xiangyangli.com>2017-12-26 01:33:40 +0800
committerSteve Lee <me@xiangyangli.com>2017-12-26 01:33:40 +0800
commit79a9c52fa923fc78074d88463449a8b7f95ca3ef (patch)
tree80c2b596a7c41124845771dca99abd364e89d4c4 /Computer_Science/leetcode/59-spiral_matrix_II.c
parent2e0e0f39d49296f0ffb99aea533a527174521d61 (diff)
download42-79a9c52fa923fc78074d88463449a8b7f95ca3ef.tar.xz
42-79a9c52fa923fc78074d88463449a8b7f95ca3ef.zip
update leetcode solution
Diffstat (limited to 'Computer_Science/leetcode/59-spiral_matrix_II.c')
-rw-r--r--Computer_Science/leetcode/59-spiral_matrix_II.c34
1 files changed, 34 insertions, 0 deletions
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;
+}