• 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;
        }
    }; 
  • 相关阅读:
    uCOS的软件定时器、uCOS时钟节拍和滴答定时器的关系
    学习ucosii要用到的几本书
    freertos知识点笔记——队列、二值信号量、计数信号量
    《嵌入式软件设计基础——基于ARM Cortex—M3》读书笔记
    大小端测试C实现
    static 的三个作用
    基于IAR6或者IAR7建立STM32开发工程(通过实际测试,使用IAR6.30.4)
    STM32中stm32f0xx_flash.icf文件的作用详解!(不错的!)
    CRC点滴
    int *a[] 与(int *)a【5】的区别
  • 原文地址:https://www.cnblogs.com/erictanghu/p/3759396.html
Copyright © 2020-2023  润新知