(java)蛇形矩阵(递归实现)
2016-04-09 09:55
281 查看
蛇形矩阵题意描述如下:
Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
For example,
Given n =
You should return the following matrix:
再比如:n=4
[
[1,2,3,4]
[12,13,14,5]
[11,16,15,6]
[10,9,8,7]
]
代码如下:
public class Solution {
public int[][] generateMatrix(int n) {
int[][] num=new int
;
if(n<=0){
return num;
}
OK(num,1,0,n-1,0,n-1);
return num;
}
public void OK(int[][] n,int num,int minrow,int maxrow,int mincol,int maxcol){
if(minrow>maxrow && mincol>maxcol){
return ;
}
for(int i=mincol;i<=maxcol;i++){
n[minrow][i]=num;
num++;
}
num--;//相同的位置,不能加两次
for(int i=minrow;i<=maxrow;i++){
n[i][maxcol]=num;
num++;
}
num--;
for(int i=maxcol;i>=mincol;i--){
n[maxrow][i]=num;
num++;
}
num--;
for(int i=maxrow;i>minrow;i--){
n[i][mincol]=num;
num++;
}
OK(n,num,++minrow,--maxrow,++mincol,--maxcol);
}
}
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 ] ]
再比如:n=4
[
[1,2,3,4]
[12,13,14,5]
[11,16,15,6]
[10,9,8,7]
]
代码如下:
public class Solution {
public int[][] generateMatrix(int n) {
int[][] num=new int
;
if(n<=0){
return num;
}
OK(num,1,0,n-1,0,n-1);
return num;
}
public void OK(int[][] n,int num,int minrow,int maxrow,int mincol,int maxcol){
if(minrow>maxrow && mincol>maxcol){
return ;
}
for(int i=mincol;i<=maxcol;i++){
n[minrow][i]=num;
num++;
}
num--;//相同的位置,不能加两次
for(int i=minrow;i<=maxrow;i++){
n[i][maxcol]=num;
num++;
}
num--;
for(int i=maxcol;i>=mincol;i--){
n[maxrow][i]=num;
num++;
}
num--;
for(int i=maxrow;i>minrow;i--){
n[i][mincol]=num;
num++;
}
OK(n,num,++minrow,--maxrow,++mincol,--maxcol);
}
}
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树