算法系列——Spiral Matrix II

来源:互联网 发布:航拍视频软件 编辑:程序博客网 时间:2024/05/16 00:47

题目描述

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

解题思路

这是Spiral Matrix 简化版本,基本思路一致,只不过行列数相同,均等于n.对Spiral Matrix的结果简化即可。

程序实现

class Solution {    public int[][] generateMatrix(int n) {       if(n<0)           return null;        int matrix[][]=new int[n][n];         if(n==0)            return matrix;        int start=0;        int num=1;        while(start*2<n){            int end=n-1-start;            //从左到右打印一行            for(int i=start;i<=end;i++)               matrix[start][i]=num++;            //从上往下打印一列            if(start<end){                for(int i=start+1;i<=end;i++)                    matrix[i][end]=num++;            }            //从右往左打印一行            if(start<end){                for(int i=end-1;i>=start;i--)                    matrix[end][i]=num++;            }            //从下往上打印一列            if(start<end-1){                 for(int i=end-1;i>=start+1;i--)                    matrix[i][start]=num++;            }              start++;        }         return matrix;    }}
原创粉丝点击