您的位置:首页 > 其它

Spiral Matrix

2015-10-02 16:14 281 查看
题目:

Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.

For example,

Given the following matrix:
[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]


You should return
[1,2,3,6,9,8,7,4,5]
.
分析:

《剑指offer》上原题,但是我记得我都ac过了啊 http://www.programcreek.com/2013/01/leetcode-spiral-matrix-java/
public class Solution {
public List<Integer> spiralOrder(int[][] matrix) {
List<Integer> result = new ArrayList<Integer>();

if(matrix == null || matrix.length == 0) return result;

int m = matrix.length;
int n = matrix[0].length;

int x=0;
int y=0;

while(m>0 && n>0){

//if one row/column left, no circle can be formed
if(m==1){
for(int i=0; i<n; i++){
result.add(matrix[x][y++]);
}
break;
}else if(n==1){
for(int i=0; i<m; i++){
result.add(matrix[x++][y]);
}
break;
}

//below, process a circle

//top - move right
for(int i=0;i<n-1;i++){
result.add(matrix[x][y++]);
}

//right - move down
for(int i=0;i<m-1;i++){
result.add(matrix[x++][y]);
}

//bottom - move left
for(int i=0;i<n-1;i++){
result.add(matrix[x][y--]);
}

//left - move up
for(int i=0;i<m-1;i++){
result.add(matrix[x--][y]);
}

x++;
y++;
m=m-2;
n=n-2;
}

return result;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: