一、題目名稱java
Spiral Matrix(螺旋輸出矩陣中的元素).net
二、題目地址code
https://leetcode.com/problems/spiral-matrix-ii/blog
三、題目內容element
英文:Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.leetcode
中文:給出一個整數n,生成一個矩陣,使用數字1到n^2以螺旋順序填充這個矩陣開發
例如:給出n=3,則生成以下矩陣:get
[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ]
四、解題方法1it
作這道題的方式能夠參考SpiralMatrix,遍歷順序是同樣的,只不過SpiralMatrix是取數,這道題要作的是賦值。io
Java代碼以下:
/** * @功能說明:LeetCode 59 - Spiral Matrix II * @開發人員:Tsybius2014 * @開發時間:2015年11月3日 */ public class Solution { /** * 生成矩陣 * @param n * @return */ public int[][] generateMatrix(int n) { if (n < 0) { n = 0; } int[][] matrix = new int[n][n]; if (n == 0) { return matrix; } int counter = 1; //左右上下四個邊界 int left = 0; int right = matrix[0].length - 1; int top = 0; int bottom = matrix.length - 1; int i; while (true) { //上邊,自左至右 for (i = left; i <= right; i++) { matrix[top][i] = counter++; } if (++top > bottom) { break; } //右邊,自上至下 for (i = top; i <= bottom; i++) { matrix[i][right] = counter++; } if (left > --right) { break; } //下邊,自右至左 for (i = right; i >= left; i--) { matrix[bottom][i] = counter++; } if (top > --bottom) { break; } //左邊,自下至上 for (i = bottom; i >= top; i--) { matrix[i][left] = counter++; } if (++left > right) { break; } } return matrix; } }
END