54.螺旋矩阵(清爽版本)C++-创新互联

给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
在这里插入图片描述
在这里插入图片描述

为襄阳等地区用户提供了全套网页设计制作服务,及襄阳网站建设行业解决方案。主营业务为做网站、成都网站制作、襄阳网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
class Solution {public:
    vectorspiralOrder(vector>& matrix) {vectorans;
        //由于是二维的,dx dy分别是行和列的每次偏移量
        //根据题目要求,蛇形遍历,偏移量有增有减
        int dx[4] = {0,1,0,-1};
        int dy[4] = {1,0,-1,0};
        int row = matrix.size();
        int col = matrix[0].size();
        int x ,y;x=y=0;
        int t = 0;
        int count = 0;
        while(countans.push_back(matrix[x][y]);
            //访问过的记录一下
            matrix[x][y] = INT_MAX;
            //如果,触碰边界或以访问,调整增量
            if(x+dx[t]<0||y+dy[t]<0||x+dx[t]>=row||y+dy[t]>=col||matrix[x+dx[t]][y+dy[t]]==INT_MAX)
            {	//通过+1取余数实现循环
                t= (t+1)%4;
            }
            x = x+dx[t];
            y = y+dy[t];  
            count++;
        }   
        return ans;
    }
};

如果碰到边界就拐弯。最直观的做法是模拟遍历矩阵,按照顺时针螺旋顺序遍历矩阵中的元素。初始位置是矩阵的左上角,初始方向是向右,当移动到矩阵下标范围以外或者已经访问过的位置时需要将移动方向顺时针旋转。

为了确保每个元素只访问一次,走过的地方置大,当遍历的元素个数等于mXn时,矩阵中的所有元素遍历结束。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网站题目:54.螺旋矩阵(清爽版本)C++-创新互联
当前路径:http://pwwzsj.com/article/copsoh.html