aboutsummaryrefslogtreecommitdiff
path: root/spiral_matrix2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'spiral_matrix2.cpp')
-rw-r--r--spiral_matrix2.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/spiral_matrix2.cpp b/spiral_matrix2.cpp
new file mode 100644
index 0000000..de119a5
--- /dev/null
+++ b/spiral_matrix2.cpp
@@ -0,0 +1,26 @@
+// 59. Spiral Matrix II
+#include "leetcode.h"
+
+// given a positive integer 'n', generate an n x n 'matrix' filled with
+// elements from 1 to 'n^2' in spiral order
+
+class Solution {
+public:
+ vvd(int) generateMatrix(int n) {
+ vvd(int) matrix(n, vector<int>(n));
+ int num = 1, row = 0, col = 0, dir = 0;
+ vector<int> d_r = {0, 1, 0, -1}, d_c = {1, 0, -1, 0};
+ while (num <= n * n) {
+ matrix[row][col] = num;
+ num++;
+ int next_row = row + d_r[dir];
+ int next_col = col + d_c[dir];
+ if (next_row < 0 || next_row >= n || next_col < 0 || next_col >= n ||
+ matrix[next_row][next_col])
+ dir = (dir + 1) % 4;
+ row += d_r[dir];
+ col += d_c[dir];
+ }
+ return matrix;
+ }
+};