leetcode:Spiral Matrix II 【Java】

来源:互联网 发布:pl sql developer下载 编辑:程序博客网 时间:2024/06/14 23:07

一、问题描述

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

二、问题分析

利用分治算法,参见博文生成数字旋转方阵,这里只是生成区域的顺序发生变化。

三、算法代码

public class Solution {    public int[][] generateMatrix(int n) {        int [][] result = new int[n][n];        generateRotate(result, 1, 0, n);        return result;    }    //生成旋转矩阵public void generateRotate(int [][] result, int number, int begin, int size){if(size == 1){result[begin][begin] = number;return;}if(size == 0){return;}//生成区域Aint i = begin;int j = begin;for(int k = 0; k < size - 1; k++){result[i][j] = number;number++;j++;}//生成区域Bfor(int k = 0; k < size - 1; k++){result[i][j] = number;number++;i++;}//生成区域Cfor(int k = 0; k < size - 1; k++){result[i][j] = number;number++;j--;}//生成区域Dfor(int k = 0; k < size - 1; k++){result[i][j] = number;number++;i--;}//递归调用generateRotate(result, number, begin + 1, size - 2);}}


0 0