Spiral Matrix
来源:互联网 发布:淘宝api下载 编辑:程序博客网 时间:2024/06/05 03:27
-----QUESTION-----
Given a matrix of
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]
.
-----SOLUTION-----
class Solution {public: vector<int> spiralOrder(vector<vector<int>> &matrix) { result.clear(); if(matrix.empty()) return result; leftPos = 0; rightPos = matrix[0].size()-1; topPos = 0; bottomPos = matrix.size()-1; goWider(matrix, true); return result; } void goWider(vector<vector<int>> &matrix, bool direct) { if(direct) { for(int i = leftPos; i<= rightPos; i++) { result.push_back(matrix[topPos][i]); } topPos++; if(topPos > bottomPos) return; goDeeper(matrix, true); } else { for(int i = rightPos; i>= leftPos; i--) { result.push_back(matrix[bottomPos][i]); } bottomPos--; if(topPos > bottomPos) return; goDeeper(matrix, false); } } void goDeeper(vector<vector<int>> &matrix, bool direct) { if(direct) { for(int i = topPos; i<= bottomPos; i++) { result.push_back(matrix[i][rightPos]); } rightPos--; if(leftPos > rightPos) return; goWider(matrix, false); } else { for(int i = bottomPos; i>= topPos; i--) { result.push_back(matrix[i][leftPos]); } leftPos++; if(leftPos > rightPos) return; goWider(matrix, true); } }private: vector<int> result; int leftPos; int rightPos; int topPos; int bottomPos;};
0 0
- Spiral Matrix
- Spiral Matrix
- Spiral Matrix
- Spiral Matrix
- Spiral Matrix
- Spiral Matrix
- Spiral Matrix
- Spiral Matrix
- Spiral Matrix
- Spiral Matrix
- Spiral Matrix
- Spiral Matrix
- Spiral Matrix
- Spiral Matrix
- Spiral Matrix
- Spiral Matrix
- Spiral Matrix
- Spiral Matrix
- linux下安装和运行wireshark
- 恰年建站新风尚受到了各大门户网站的争相报道
- 互联网颠覆LED行业格局 O2O要切实落地
- PPP和PPPoE的工作原理
- FreeRDP 编译和使用介绍
- Spiral Matrix
- Androids中的System.loadLibrary对于依赖so的加载分析
- 接口和抽象类有什么区别
- java 中堆和栈的区别 已经String和new String()的区别
- IT忍者神龟之S获取IP、MAC和主机名多方法、多平台
- javascript原生移动云编程14 - 如何隐藏和定制屏幕上部的导航条
- “.公司”和“.网络”抢滩期注册及竞价规则
- perl
- Jquery定时执行器setInterval和setTimeout的使用