螺旋矩阵I和II
螺旋矩阵I
给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。
示例 1:
输入:
[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]
输出: [1,2,3,6,9,8,7,4,5]
螺旋矩阵II
例如:
输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
这两个题目都是按照从外向里一层一层的遍历或者添加元素,难度一般,主要是细心点,可以在纸上画出来,减少出错。
代码如下:
螺旋矩阵II
class Solution {
public int[][] generateMatrix(int n) {
int[][] matrix=new int[n][n];
if(n==0)
return matrix;
int rowStart=0,rowEnd=n-1;
int colStart=0,colEnd=n-1;
int num=1;
while(rowStart<=rowEnd){
while(rowStart<=rowEnd){
for(int i=colStart;i<=colEnd;i++){
matrix[rowStart][i]=num++;
}
rowStart++;
for(int j=rowStart;j<=rowEnd;j++){
matrix[j][colEnd]=num++;
}
colEnd--;
for(int k=colEnd;k>=colStart;k--){
matrix[rowEnd][k]=num++;
}
rowEnd--;
for(int g=rowEnd;g>=rowStart;g--){
matrix[g][colStart]=num++;
}
colStart++;
}
return matrix;
}
}
}
时间复杂度:O(n^2);