LintCode 螺旋矩阵 (新解法)
来源:互联网 发布:知乎 感情 精华贴 编辑:程序博客网 时间:2024/06/05 10:51
给定一个包含 m x n 个要素的矩阵,(m 行, n 列),按照螺旋顺序,返回该矩阵中的所有要素。
样例
给定如下矩阵:
[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]
应返回 [1,2,3,6,9,8,7,4,5]
。
有趣的新解法思路:由当前坐标通过简单的逻辑分析可得下一个坐标
class Solution {public: /** * @param matrix a matrix of m x n elements * @return an integer array */ vector<int> spiralOrder(vector<vector<int>>& matrix) { // Write your code here vector<int> res; if(matrix.size() == 0) return res; const int m = matrix.size(); const int n = matrix[0].size(); bool flag[m][n] ; int coord[2] = {0}; int screw[m][n] ; for(int i = 0; i <= m * n; i++) { flag[(i - 1) / n][(i - 1) % n] = 0; } for(int i = 1; i <= m * n; i++ ) { res.push_back(matrix[coord[0]][coord[1]]); //screw[coord[0]][coord[1]] = matrix[(i - 1) / 4][(i - 1) % 4] ; //cout<<"("<<coord[0]<<","<<coord[1]<<")->"<<endl; if( coord[1] + 1 < n && flag[coord[0]][coord[1] + 1] != 1) { if(coord[0] - 1 >= 0 && flag[coord[0] - 1][coord[1]] != 1) { flag[coord[0]][coord[1]] = 1; coord[0]--; } else { flag[coord[0]][coord[1]] = 1; coord[1]++; } } else if(coord[0] + 1 < m && flag[coord[0] + 1][coord[1]] != 1) { flag[coord[0]][coord[1]] = 1; coord[0]++; } else if( coord[1] - 1 >= 0 && flag[coord[0]][coord[1] - 1] != 1) { flag[coord[0]][coord[1]] = 1; coord[1]--; } else if(coord[0] - 1 >= 0 && flag[coord[0] - 1][coord[1]] != 1) { flag[coord[0]][coord[1]] = 1; coord[0]--; } else flag[coord[0]][coord[1]] = 1; } return res; } };
0 0
- LintCode 螺旋矩阵 (新解法)
- 打印螺旋矩阵(递归解法)
- 打印螺旋矩阵(递归解法)
- 螺旋矩阵 解法
- lintcode-螺旋矩阵 II
- lintcode,螺旋矩阵
- Lintcode 螺旋矩阵 II
- lintcode --螺旋矩阵II
- [LintCode]374.螺旋矩阵
- 螺旋矩阵-LintCode
- 螺旋矩阵 II -LintCode
- 我的螺旋矩阵解法!
- [LintCode] 螺旋矩阵 Spiral Matrix
- *[Lintcode]Spiral Matrix螺旋矩阵
- LintCode 374-螺旋矩阵 状态机
- [LintCode]381.螺旋矩阵 II
- 螺旋矩阵_动态规划解法
- LintCode-剑指Offer-(374)螺旋矩阵
- mina总结
- node 可视化调试(支持监控文件变化)
- 0-1背包问题
- KVC 的 容错方法
- 如何从服务端下载的文件保存到SD卡
- LintCode 螺旋矩阵 (新解法)
- Scala: Under The Hood of Hello World
- 活了20年多了才知道!蜂蜜十大鲜见真相吓掉小命
- Android 动画杂谈 (三)
- 单源最短路径
- UI-之plist文件解析
- 链表反转的几种形式
- HDU 5583 Kingdom of Black and White(依旧是暴力)——2015ACM/ICPC亚洲区上海站
- 软件测试基础题