本文主要是介绍螺旋矩阵-力扣,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
由于是先刷的螺旋矩阵Ⅱ,在做这道题时,套用了之前的代码,但发现有些问题,这里矩阵并不是n x n的矩阵,而是一个n x m的矩阵,在使用层1,层2这样来进行添加时,有些元素会添加不到,继而改用上下左右四个边界来解题,但是发现如果此时使用四个左闭右开区间去遍历,当矩阵为行或列为奇数时,遍历到最后,左右边界或者上下边界相等,此时四个循环都不会进入,因此需要对四个循环的边界进行修改,代码如下:
class Solution {
public:vector<int> spiralOrder(vector<vector<int>>& matrix) {int i,j;int n = matrix.size();int m = matrix[0].size();int right = m - 1;int left = 0;int top = 0;int bottom = n - 1;vector<int> v;while(left <= right && top <= bottom){for(j = left; j <= right; j++){v.push_back(matrix[top][j]);}for(i = top + 1; i <= bottom; i++){v.push_back(matrix[i][right]);}if(left < right && top < bottom){for(j = right - 1; j >= left; j--){v.push_back(matrix[bottom][j]);}for(i = bottom - 1; i > top; i--){v.push_back(matrix[i][left]);} }left++;right--;top++;bottom--;}return v; }
};
这篇关于螺旋矩阵-力扣的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!