您的位置:首页 > 其它

leetcode 054 —— Spiral Matrix

2015-07-23 19:35 369 查看
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]
.

思路:从最外圈遍历到最内圈

class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
vector<int> res;
int m = matrix.size(); //行
if (!m) return res; //空的情况
int n = matrix[0].size(); //列
int lim = (min(m,n)+ 1) / 2; <span style="white-space:pre"> </span>//层数

for (int level = 0; level < lim; level++){
for (int j = level; j <= n - level - 1; j++) //遍历up边
res.push_back(matrix[level][j]);
if (level == lim - 1 && m-level*2 == 1) //最后一行为奇数行
break;
for (int j = level + 1; j < m - level - 1; j++) //遍历right边
res.push_back(matrix[j][n - 1 - level]);
for (int j = n - level - 1; j >= level; j--) //遍历down边
res.push_back(matrix[m - 1 - level][j]);
if (level == lim - 1 && n - level * 2 == 1) //最后一列为奇数列
break;
for (int j = m - level - 2; j>level; j--) //遍历left边
res.push_back(matrix[j][level]);
}
return res;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: