• LeetCode() Spiral Matrix


    顺时针打印二维数组,以前在牛客网上做过,不过还是忘了

     int n,m;
        vector<vector<bool> > v;
        bool judge(int i,int j)
        {
           return i>=0 && i<n && j>=0 && j<m && !v[i][j];    //判断,相当于小旗子 右,下,左,上
        }
    public:
        vector<int> printMatrix(vector<vector<int> > matrix) {
            vector<int> res;
            if( !(n = matrix.size()) || !(m = matrix[0].size()))
               return res;
            v = vector<vector<bool> >(n,vector<bool>(m,false)); //如何定义二维数组!
            const int D[4][2] = {{0,1},{1,0},{0,-1},{-1,0}}; //四个方向
            int i = 0, j = 0, d = 0, T = m * n;
            while(T--){
                res.push_back(matrix[i][j]);
                v[i][j] = true;
                if(!judge(i + D[d][0], j + D[d][1])) (++d) %= 4; //转弯
                i += D[d][0], j += D[d][1];//前进
            }
            return res;
        }
    

      Spiral Matrix II

    class Solution {
        vector<vector<bool>> v;
    public:
        vector<vector<int>> generateMatrix(int n) {
            vector<vector<int>> res=vector<vector<int> >(n,vector<int>(n)); 
            v=vector<vector<bool>>(n,vector<bool>(n,false));
            int num=n*n;
            if(num == 0)
                return res;
            int i=0;
            int row=0,col=0;
            int D[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
            int d=0;
            while(++i<=num)
            {
                res[row][col]=i;
                v[row][col]=true;
                if(!judge(n,row+D[d][0],col+D[d][1])) //if(row<0 || row>=n || col<0 || col>=n || v[row][col]) 这么写为什么不对
                    (++d) %= 4;
                row +=D[d][0],col+=D[d][1];
            }
            return res;
        }
        bool judge(int n,int row,int col)
        {
            return row>=0 && row<n && col>=0 && col<n && !v[row][col];
        }
    };
    

      

  • 相关阅读:
    Zend Studio使用
    iOS中block实现的探究
    用python演示一个简单的AST(抽象语法树)
    Cocos2D-x权威指南: CCNode类方法:
    ListView的优化
    可变參数
    android媒体--stagefright概述【一】
    flume安装及配置
    linux包之sysstat之mpstat与pidstat命令
    Java实现第十届蓝桥杯等差数列
  • 原文地址:https://www.cnblogs.com/yanqi110/p/4969072.html
Copyright © 2020-2023  润新知