Leetcode59. Spiral Matrix II

59. Spiral Matrix II

1、原题

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

2、题意解析与思路

题目意思很简单,就是给我们一个正数n,让我们按照螺旋顺序将1-n^2这些数填充到二维数组当中,题目给了一个样例,就是左->右,上->下,右->左,下->上的这个顺序。
我做这道题的算法比较无脑,就是按照上面说的顺序进行数字的填充。具体请看代码。

3、代码

	public int[][] generateMatrix(int n) {
		int[][] res = new int[n][n];
		//定义4个标志,用来进行多次螺旋顺序的操作
		int left = 0, top = 0;
		int right = n, down = n;
		//填充数字
		int count = 1;
		while (left < right) {
			//从左到右,然后top标志加1
			for (int i = left; i < right; i++) {
				res[top][i] = count++;
			}
			top++;
			
			//从上到下,然后right标志减1
			for (int i = top; i < down; i++) {
				res[i][right-1] = count++;
			}
			right--;
			
			//从右到左,然后down标志减1
			for (int i = right - 1; i >= left; i--) {
				res[down-1][i] = count++;
			}
			down--;
			
			//从下到上,然后left标志加1
			for (int i = down - 1; i >= top; i--) {
				res[i][left] = count++;
			}
			left++;
		}
		
		return res;
    }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值