• 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].

    struct Direction
    {
        int x;
        int y;
        Direction()
        {}
        Direction(int x,int y)
        {
            this->x=x;
            this->y=y;
        }
    };
    class Solution {
    public:
        vector<int> spiralOrder(vector<vector<int> > &matrix) 
        {
            vector<int> result;
            //find max        
            int m=matrix.size();
            if(m==0return result;
            int n=matrix[0].size();
            
            int FLAG=matrix[0][0];
            for(int i=0;i<m;i++)
                for(int j=0;j<n;j++)
                    if(matrix[i][j]>FLAG)
                        FLAG=matrix[i][j];
            FLAG++;
            struct Direction dir[4];
            dir[0].x=0;dir[0].y=1;
            dir[1].x=1;dir[1].y=0;
            dir[2].x=0;dir[2].y=-1;
            dir[3].x=-1;dir[3].y=0;
            int cnt=0;
            int x=0;
            int y=-1;
            int diri=0;
            while(cnt<m*n)
            {
                while(x+dir[diri].x>=0 && x+dir[diri].x<m && y+dir[diri].y>=0 && y+dir[diri].y<n 
                    && matrix[x+dir[diri].x][y+dir[diri].y]!=FLAG)
                {
                    x=x+dir[diri].x;
                    y=y+dir[diri].y;
                    result.push_back(matrix[x][y]);
                    matrix[x][y]=FLAG;
                    cnt++;                
                }
                diri=(diri+1)%4;
            }
            return result;
        }
    }; 
  • 相关阅读:
    Source Maps简介
    JavaScript数据结构——图的实现
    JavaScript数据结构——树的实现
    JavaScript数据结构——字典和散列表的实现
    JavaScript数据结构——集合的实现与应用
    [转]通过设置nginx的client_max_body_size解决nginx+php上传大文件的问题
    安卓刷量技术揭秘
    【转】让Bootstrap 3兼容IE8浏览器
    [LINK]Python服务器开发一:python基础
    [LINK]用Python计算昨天、今天和明天的日期时间
  • 原文地址:https://www.cnblogs.com/erictanghu/p/3759396.html
Copyright © 2020-2023  润新知