您的位置:首页 > 其它

leetcode 59. Spiral Matrix II

2016-04-16 23:36 585 查看
59. 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 ]
]


这道题和【面上编程题】-8剑指offer之解决面试题的思路 中顺序打印矩阵类似。

要生成的矩阵是个正方形,按右,下,左,上的顺序访问正方形的边界,插入数。每次循环完一遍,缩小正方形行列的范围。

public class Solution {
public int[][] generateMatrix(int n) {
int[][] res=new int

;
int k=1; //保存的数
int i=0,j=0; //坐标
int h=n,l=0; //正方形的行列的范围
int MAX=n*n;
while(k<=MAX){
//向右
while(k<=MAX && j<h){
res[i][j++]=k++;
}
j--;
i++;
//向下
while(k<=MAX && i<h){
res[i++][j]=k++;
}
i--;
j--;
//向左
while(k<=MAX && j>=l){
res[i][j--]=k++;
}
j++;
i--;
//向上
while(k<=MAX && i>l){
res[i--][j]=k++;
}
i++;
j++;
h--;
l++;
}
return res;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: