LeetCode-Spiral Matrix II
原创
©著作权归作者所有:来自51CTO博客作者BeHelium的原创作品,请联系作者获取转载授权,否则将追究法律责任
Description:
Given a positive integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
Example:
Input: 3
Output:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
题意:给定一个整数n,返回一个n阶方阵,其中的元素按照螺旋的方式填充元素1到n*n;如图所示:
解法:这一道题其实和Spiral Matrix是一样的,只不过一个是按照螺旋方式遍历元素,一个是按照螺旋方式填充元素,详细讲解可以参照Sprial Matrix的讲解;
Java
class Solution {
public int[][] generateMatrix(int n) {
int[][] result = new int[n][n];
boolean[][] visited = new boolean[n][n];
int cnt = 0;
int[][] step = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
int stepIndex = 0;
int row = 0;
int col = 0;
while (cnt++ < n * n) {
result[row][col] = cnt;
visited[row][col] = true;
int tempRow = row + step[stepIndex][0];
int tempCol = col + step[stepIndex][1];
if (tempRow >= 0 && tempRow < n &&
tempCol >= 0 && tempCol < n &&
!visited[tempRow][tempCol]) {
row = tempRow;
col = tempCol;
} else {
stepIndex = (stepIndex + 1) % step.length;
row += step[stepIndex][0];
col += step[stepIndex][1];
}
}
return result;
}
}