【題目描述】
Given a matrix of?mxn?elements (m?rows,n?columns), return all elements of the matrix in spiral order.?
給定一個包含mxn個要素的矩陣,(m行,n列)滑蚯,按照螺旋順序砂吞,返回該矩陣中的所有要素。
【題目鏈接】
www.lintcode.com/en/problem/spiral-matrix/
【題目解析】
由題意知扫责,給定一個矩陣请契,我們將采用 “旋轉(zhuǎn)” 的遍歷方式對這個矩陣中的元素進(jìn)行遍歷锅风,將遍歷到的矩陣元素存入結(jié)果數(shù)組并返回。
“旋轉(zhuǎn)” 遍歷即從矩陣第一個元素開始淮逻,圍繞著矩陣的外圍琼懊,從左上到右上,從右上到右下爬早,從右下到左下哼丈,再從左下到左上,依次進(jìn)行筛严。
取到原矩陣的行數(shù) rows 和列數(shù) cols 醉旦,仔細(xì)觀察其遍歷的坐標(biāo),可以發(fā)現(xiàn)每一次 “旋轉(zhuǎn)” 起始坐標(biāo)為(i桨啃,i)车胡,即對角線元素,按照上面說明的遍歷順序照瘾,向右遍歷直至(i匈棘,cols-1-i),再向下遍歷至 (rows-1-i析命,cols-1-i)主卫,再向左遍歷至(rows-1-i,i)鹃愤,再向上遍歷至(i簇搅,i+1),這樣一次遍歷結(jié)束昼浦。
遍歷的輪數(shù)為 ( min(rows, cols) + 1) / 2馍资。需要注意筒主,當(dāng)從右下到左下遍歷時如果 rows-1-i == i 并且當(dāng)從左下到左上時如果 cols -1-i == i 关噪,則不需要再重復(fù)遍歷。
【參考答案】