[Leetcode]Spiral Matrix
2015-11-13 22:29
246 查看
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:
You should return
class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
vector<int>result;
int m = matrix.size();
if(m < 1)return result;
int n = matrix[0].size();
if(n < 1)return result;
int level = (min(m,n)+1)/2;
for(int l = 0;l < level;l++){
//top
for(int j = l;j < n-l;j++)
result.push_back(matrix[l][j]);
//right
for(int i = l+1;i < m-1-l;i++)
result.push_back(matrix[i][n-1-l]);
//bottom
for(int j = n-1-l;j >= l && (m-l-1)>l;j--) //top != bottom
result.push_back(matrix[m-1-l][j]);
//left
for(int i = m-2-l;i > l && l < (n-1-l);i--) // left != right
result.push_back(matrix[i][l]);
}
return result;
}
};
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>result;
int m = matrix.size();
if(m < 1)return result;
int n = matrix[0].size();
if(n < 1)return result;
int level = (min(m,n)+1)/2;
for(int l = 0;l < level;l++){
//top
for(int j = l;j < n-l;j++)
result.push_back(matrix[l][j]);
//right
for(int i = l+1;i < m-1-l;i++)
result.push_back(matrix[i][n-1-l]);
//bottom
for(int j = n-1-l;j >= l && (m-l-1)>l;j--) //top != bottom
result.push_back(matrix[m-1-l][j]);
//left
for(int i = m-2-l;i > l && l < (n-1-l);i--) // left != right
result.push_back(matrix[i][l]);
}
return result;
}
};
相关文章推荐
- mysql IN 比等价的OR写法效率更高
- 2015月11月13日
- Strchr()函数详解
- swift中操作string
- Android新特性v7 - CardView
- Log One(phpmyadmin中使用配置文件中定义的控制用户连接失败问题 :)
- HBase shell scan 模糊查询
- LINQ To SQL && Lambda 练习题
- 个人博客作业Week7(阅读文章,心得体会)
- 归档解档
- spring mvc 注解 annot失效
- 一步一步写平衡二叉树(AVL树)
- mingw
- 我的二维码
- 关于指针的个人见解
- 开始swift学习之路
- iOS开发——设计模式
- Silverlight 打造个性Portal界面
- android事件总线 otto使用
- java学习:给登入界面添加键盘监听,按回车键登入