本文準備講解1個算法編程問題, 這個算法編程問題來自LintCode平臺。不了解.LintCode平臺的讀者可以閱讀筆者文章(在線編程平臺推薦-LeetCode)。問題的英文版本描述如下:
Matrix Zigzag Traversal
Given a matrix of?mxn?elements (m?rows,n?columns), return all elements of the matrix in ZigZag-order.
Example
Given a matrix:
[
[1, 2,? 3,? 4],
[5, 6,? 7,? 8],
[9,10, 11, 12]
]
return [1, 2, 5, 9, 6, 3, 4, 7, 10, 11, 8, 12].
矩陣的之字型遍歷
給你一個包含 mxn 個元素的矩陣 (m行,n列), 之字型遍歷該矩陣。
樣例
對于如下矩陣:
[
[1, 2,? 3,? 4],
[5, 6,? 7,? 8],
[9,10, 11, 12]
]
返回 [1, 2, 5, 9, 6, 3, 4, 7, 10, 11, 8, 12]。
該問題要求對矩陣元素逐行斜線遍歷。以樣例矩陣為例,1個斜線遍歷為 [ 2,5],另1個斜線遍歷為 [9,6,3]。這2個斜線遍歷的遍歷方向相反。算法處理方案需要將斜線非端點節(jié)點和斜線端點節(jié)點的處理區(qū)別對待。斜線非端點節(jié)點為非矩陣邊界節(jié)點,如樣例矩陣的 6。斜線端點節(jié)點為矩陣邊界節(jié)點,如樣例矩陣的 2,5,9,3?,F(xiàn)在公布1種高效簡單的算法方案。

高效簡單的算法