diff options
Diffstat (limited to 'spiral_matrix2.cpp')
-rw-r--r-- | spiral_matrix2.cpp | 26 |
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; + } +}; |