首页 > 代码库 > LeetCode54 Spiral Matrix
LeetCode54 Spiral Matrix
题目:
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]
. (Medium)
分析:
题目没有什么复杂的算法要应用,就是一行一列输出,处理好细节即可。
比较清晰的写法是搞一个rowBegin, rowEnd, colBegin, colEnd, 并在处理完一行/一列后更新值,并判断是否仍然满足 rowBegin <= rowEnd && colBegin <= colEnd
代码:
1 class Solution { 2 public: 3 vector<int> spiralOrder(vector<vector<int>>& matrix) { 4 vector<int> result; 5 if (matrix.size() == 0) { 6 return result; 7 } 8 int m = matrix.size(), n = matrix[0].size(); 9 int rowBegin = 0, rowEnd = m - 1, colBegin = 0, colEnd = n - 1;10 while (rowBegin <= rowEnd && colBegin <= colEnd) {11 for (int i = colBegin; i <= colEnd; ++i ) {12 result.push_back(matrix[rowBegin][i]);13 }14 rowBegin++;15 if (rowBegin > rowEnd) {16 break;17 }18 for (int i = rowBegin; i <= rowEnd; ++i) {19 result.push_back(matrix[i][colEnd]);20 }21 colEnd--;22 if (colBegin > colEnd) {23 break;24 }25 for (int i = colEnd; i >= colBegin; --i) {26 result.push_back(matrix[rowEnd][i]);27 }28 rowEnd--;29 if (rowBegin > rowEnd) {30 break;31 }32 for (int i = rowEnd; i>= rowBegin; --i) {33 result.push_back(matrix[i][colBegin]);34 }35 colBegin++;36 }37 return result;38 }39 };
LeetCode54 Spiral Matrix
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。