旋转矩阵II
2019-03-08 本文已影响0人
YocnZhao
LeetCode 旋转矩阵II电梯直达
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
这次其实用我之前写的那个也可以,但是这次我们用一个新的思路,新的思路就是硬怼。找到对应的坐标,然后把对应的值赋进去。
public int[][] generateMatrix(int n) {
int[][] arr = new int[n][n];
//index是数字,layer是层数。
int index = 0, layer = 0;
while (index < n * n) {
for (int i = layer; i < n - layer; i++) {
arr[layer][i] = ++index;
}
for (int i = layer + 1; i < n - layer; i++) {
arr[i][n - layer - 1] = ++index;
}
for (int i = n - layer - 2; i >= layer; i--) {
arr[n - layer - 1][i] = ++index;
}
for (int i = n - layer - 2; i > layer; i--) {
arr[i][layer] = ++index;
}
layer++;
}
return arr;
}
首先还是分层的思想,爱的魔力转圈圈,从外到内,先把层数分出来,层数用layer表示。
然后顺时针转圈就好了,其实就是坐标的计算。