Leetcodes Solution 54 Spiral Matrix

匯總

雪之下雪乃:leetcode解題總匯?

zhuanlan.zhihu.com圖標

Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.

For example,

Given the following matrix:

[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]

You should return [1,2,3,6,9,8,7,4,5].

思路1

Spiral Matrix - LeetCode

class Solution{public: vector<int> spiralOrder(vector<vector<int>>& matrix) { vector<vector<int> > dirs{{0, 1}, {1, 0}, {0, -1}, {-1, 0}}; vector<int> res; int nr = matrix.size(); if (nr == 0) return res; int nc = matrix[0].size(); if (nc == 0) return res; vector<int> nSteps{nc, nr-1}; int iDir = 0; // index of direction. int ir = 0, ic = -1; // initial position while (nSteps[iDir%2]) { for (int i = 0; i < nSteps[iDir%2]; ++i) { ir += dirs[iDir][0]; ic += dirs[iDir][1]; res.push_back(matrix[ir][ic]); } nSteps[iDir%2]--; iDir = (iDir + 1) % 4; } return res; }};

推薦閱讀:

浙江大學-數據結構-歸併排序-9.4.3
浙江大學-數據結構-簡單排序-9.1.3
數據結構-遍歷二叉樹
2017.12.10
浙江大學-數據結構-應用實例:六度空間-6.4.1

TAG:演算法 | 編程 | 數據結構 |