54 螺旋数组
class Solution {
public List<Integer> spiralOrder(int[][] matrix) {
int m=matrix.length;int n=matrix[0].length;
int i=0;int j=0;int sum=0;
int loop=Math.min(m,n)/2;
List<Integer> list=new ArrayList();
int startX=0;int startY=0;int offset=1;
while(loop-->0){
for(j=startY;j<startY+n-offset;j++){
list.add(matrix[startX][j]);
}
for(i=startX;i<startX+m-offset;i++){
list.add(matrix[i][j]);
}
for(;j>startY;j--){
list.add(matrix[i][j]);
}
for(;i>startX;i--){
list.add(matrix[i][j]);
}
startX++;
startY++;
offset+=2;
}
if (n == m &&n % 2 ==1){
list.add(matrix[n/2][n/2]);
}
if(m<n&&m%2==1){
for(i=m/2;i<n-m/2;i++){
list.add(matrix[m/2][i]);
}
}
if(m>n&&n%2==1){
for(i=n/2;i<m-n/2;i++){
list.add(matrix[i][n/2]);
}
}
return list;
}
}
数组90度旋转
顺时针旋转二维矩阵
我们可以先将
n x n
矩阵matrix
按照左上到右下的对角线进行镜像对称然后再对矩阵的每一行进行反转:
矩阵逆时针旋转 90 度
思路是类似的,只要通过左下右上对角线镜像对称矩阵,然后再反转每一行,就得到了逆时针旋转矩阵的结果