<LeetCode OJ> 54 / 59 Spiral Matrix( I / II )
2016-06-04 18:05
447 查看
Total Accepted: 61182 Total
Submissions: 268396 Difficulty: Medium
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
Subscribe to see which companies asked this question
Hide Tags
Array
Hide Similar Problems
(M) Spiral Matrix II
分析:
控制不好边界条件,被此题虐了!鉴赏别人的算法,那叫一个漂亮!
59. Spiral Matrix II
Total Accepted: 54401 Total
Submissions: 153690 Difficulty: Medium
Given an integer n, generate a square matrix filled with elements from 1 to n2 in
spiral order.
For example,
Given n =
You should return the following matrix:
Subscribe to see which companies asked this question
Hide Tags
Array
Hide Similar Problems
分析:
和上一题一样
注:本博文为EbowTang原创,后续可能继续更新本文。如果转载,请务必复制本条信息!
原文地址:http://blog.csdn.net/ebowtang/article/details/51585437
原作者博客:http://blog.csdn.net/ebowtang
本博客LeetCode题解索引:http://blog.csdn.net/ebowtang/article/details/50668895
Submissions: 268396 Difficulty: Medium
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].
Subscribe to see which companies asked this question
Hide Tags
Array
Hide Similar Problems
(M) Spiral Matrix II
分析:
控制不好边界条件,被此题虐了!鉴赏别人的算法,那叫一个漂亮!
class Solution { public: vector<int> spiralOrder(vector<vector<int>>& matrix) { vector<int> result; if(matrix.empty()) return result; //这是思路最显然,最漂的方式,参考讨论区 int rowBegin = 0;//行开始 int rowEnd = matrix.size()-1;//行结束 int colBegin = 0;//列开始 int colEnd = matrix[0].size() - 1;//列结束 while (rowBegin <= rowEnd && colBegin <= colEnd) { // 从左到右 for (int j = colBegin; j <= colEnd; j ++) result.push_back(matrix[rowBegin][j]); rowBegin++;//收缩行开始 // 从上到下 for (int j = rowBegin; j <= rowEnd; j ++) result.push_back(matrix[j][colEnd]); colEnd--; // 从右到左 if (rowBegin <= rowEnd) { for (int j = colEnd; j >= colBegin; j --) result.push_back(matrix[rowEnd][j]); } rowEnd--; // 从下到上 if (colBegin <= colEnd) { for (int j = rowEnd; j >= rowBegin; j --) result.push_back(matrix[j][colBegin]); } colBegin++; } return result; } };
59. Spiral Matrix II
Total Accepted: 54401 Total
Submissions: 153690 Difficulty: Medium
Given an integer n, generate a square matrix filled with elements from 1 to n2 in
spiral order.
For example,
Given n =
3,
You should return the following matrix:
[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]
Subscribe to see which companies asked this question
Hide Tags
Array
Hide Similar Problems
分析:
和上一题一样
class Solution { public: vector<vector<int>> generateMatrix(int n) { vector<vector<int>> matrix; vector<int> aline(n,0); for(int i=0;i<n;i++) matrix.push_back(aline); int rowBegin = 0;//行开始 int rowEnd = n-1;//行结束 int colBegin = 0;//列开始 int colEnd = n-1;//列结束 int val=1; while (rowBegin <= rowEnd && colBegin <= colEnd) { // 从左到右 for (int j = colBegin; j <= colEnd; j ++) matrix[rowBegin][j]= val++; rowBegin++;//收缩行开始 // 从上到下 for (int j = rowBegin; j <= rowEnd; j ++) matrix[j][colEnd] = val++; colEnd--; // 从右到左 if (rowBegin <= rowEnd) { for (int j = colEnd; j >= colBegin; j --) matrix[rowEnd][j]=val++; } rowEnd--; // 从下到上 if (colBegin <= colEnd) { for (int j = rowEnd; j >= rowBegin; j --) matrix[j][colBegin]=val++; } colBegin++; } return matrix; } };
注:本博文为EbowTang原创,后续可能继续更新本文。如果转载,请务必复制本条信息!
原文地址:http://blog.csdn.net/ebowtang/article/details/51585437
原作者博客:http://blog.csdn.net/ebowtang
本博客LeetCode题解索引:http://blog.csdn.net/ebowtang/article/details/50668895
相关文章推荐
- max_user_connections参数设置试验
- 细聊冗余表数据一致性
- Hadoop集群应用于大数据分析优势和挑战
- 关于Fragment中viewpager的子fragment不能加载布局的问题
- jQuery实现 全选/全不选
- 软件下载站
- python学习 函数
- Android中的AlarmManager的使用
- linux基本命令(56)——netstat命令
- PowerPoint 2007双显示输出技巧
- Android5.1系统外部存储和U盘可写解决方案
- HashMap & Hashtable区别
- 剑指offer(三十九)之连续子数组的最大和
- 双边滤波(Bilateral filter)
- Java clone() 浅克隆与深度克隆
- Java clone() 浅克隆与深度克隆
- QSharedMemory类
- 前置和后置++运算符的重载
- C#如何在派生类中不显示父类的一些属性以及TypeDescriptor使用
- 使用定时任务运行powershell脚本