LeetCode进阶之路(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 ]
]

题目:给一个n,将1至n^2间的的数按规律放到二维数组中。

思路:这题是前面做过的Spiral Matrix的升级版,也只是需要把握好边界就行。

public int[][] generateMatrix(int n) {
        int[][] result = new int[n][n];
		int i = 1;
		int rowMax = n-1;
		int rowMin = 0;
		int colMax = n-1;
		int colMin = 0;
		while(i <= n*n) {
			for(int j = colMin; j <=colMax;j++) {
				result[rowMin][j] = i;
				i++;
			}
			rowMin++;
			
			for(int j = rowMin;j <= rowMax;j++) {
				result[j][colMax] = i;
				i++;
			}
			colMax--;
			for(int j = colMax;j >= colMin;j--) {
				result[rowMax][j] = i;
				i++;
			}
			rowMax--;
			for(int j = rowMax;j >= rowMin;j--) {
				result[j][colMin] = i;
				i++;
			}
			colMin++;
		}
		
		return result;
    }

种一棵树最好的时间是十年前,其次是现在!

PS:最近两个星期出差,接手防火墙的项目,完全重新开始学,希望这两个星期能够尽可能多的掌握,免得回杭州后还得远程求助。老实说,网络通信这块不是自己感兴趣的,但是也不会其他方面的,只能这样继续磨着。leetcode这个一定要坚持刷下去,其他知识也要赶快自学起来了,做好跳槽的准备,网易才是我的梦想。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值