首页 > 其他 > 详细

Spiral Matrix II(旋转矩阵)

时间:2014-03-08 09:05:34      阅读:296      评论:0      收藏:0      [点我收藏+]

题目原型:

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 ]
]
基本思路:

我们注意到,每次开始操作的位置是对角线的位置。在每次打印一圈时,先将列坐标累加1,然后行坐标累加1,进而列坐标类减1,最后行坐标累减一;重复以上操作直到结束。

	public int[][] generateMatrix(int n)
	{
		int[][] num = new int[n][n];
		
		int layer = 0;//围成的层数
		int i = 1;//计数
		
		int row = 0;
		int column = 0;
		
		
		while(true)
		{
			while(column<n-layer)
			{
				num[row][column]=i;
				i++;
				column++;
			}
			column--;//退回来
			row++;//开始
			while(row<n-layer)
			{
				num[row][column]=i;
				i++;
				row++;
			}
			row--;
			column--;
			while(column>=layer)
			{
				num[row][column]=i;
				i++;
				column--;
			}
			column++;
			row--;
			layer++;//将圈数加一
			while(row>=layer)
			{
				num[row][column]=i;
				i++;
				row--;
			}
			if(layer>((n+1)/2))
				break;
			//重新分配起点
			row = layer;
			column = layer;
		}
		return num;
	}



Spiral Matrix II(旋转矩阵),布布扣,bubuko.com

Spiral Matrix II(旋转矩阵)

原文:http://blog.csdn.net/cow__sky/article/details/20735439

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!