zoukankan      html  css  js  c++  java
  • [LeetCode] Spiral Matrix II

    Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.

    For example, Given n = 3,

    You should return the following matrix:

    [
     [ 1, 2, 3 ],
     [ 8, 9, 4 ],
     [ 7, 6, 5 ]
    ]
    
    class Solution {
    public:
        vector<vector<int> > generateMatrix(int n) {
            vector<int> v(n,0);
            vector<vector<int>> res(n,v);
            int col = (n+1)/2-1;//结束点的行列号
            int row = n/2;
            int num = 1;
            int rowStart=0,rowEnd=n-1,colStart=0,colEnd=n-1;
    
            int j=colStart,i=rowStart ;
            while(1)
            {
                
                for(j = colStart;j<=colEnd;j++)
                {
                    res[i][j] = num++;
                }
                j = j-1;
                if(i==row && j==col)
                    break;
                rowStart++;
                j = colEnd;
    
                for(i=rowStart;i<=rowEnd;i++)
                {
                    res[i][j] = num++;
                }
                colEnd--;
                i = rowEnd;
                for(j=colEnd;j>=colStart;j--)
                {
                    res[i][j] = num++;
    
                }
                j = j+1;
                if(i==row && j==col)
                    break;
                rowEnd--;
                j=colStart;
                for(i = rowEnd;i>=rowStart;i--)
                {
                    res[i][j] = num++;
                }
                colStart++;
                i = rowStart;
            }//end while
        return res;
        }
    };
  • 相关阅读:
    11
    消除左递归
    4.K均值算法--应用
    3.K均值算法
    2.机器学习相关数学基础作业
    机器算法学习第一次作业
    第十五次作业
    第十四次作业
    第十三次作业
    第十二次作业
  • 原文地址:https://www.cnblogs.com/Xylophone/p/3870570.html
Copyright © 2011-2022 走看看