Spiral Matrix leetcode java
2014-08-03 02:07
369 查看
题目:
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:
You should return
题解:
这道题是实现题。
考虑2个初始条件,如果矩阵只有一行或者一列,那么无需转圈,依次输出即可。
其他情况均需转圈:从左到右,从上到下,从右到左,从下到上。 从大圈依次循环到小圈即可。
代码如下:
1 public ArrayList<Integer> spiralOrder(int[][] matrix) {
2 ArrayList<Integer> result = new ArrayList<Integer>();
3 if(matrix == null || matrix.length == 0)
4 return result;
5
6 int m = matrix.length;
7 int n = matrix[0].length;
8
9 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;
}
Reference:http://www.programcreek.com/2013/01/leetcode-spiral-matrix-java/
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].
题解:
这道题是实现题。
考虑2个初始条件,如果矩阵只有一行或者一列,那么无需转圈,依次输出即可。
其他情况均需转圈:从左到右,从上到下,从右到左,从下到上。 从大圈依次循环到小圈即可。
代码如下:
1 public ArrayList<Integer> spiralOrder(int[][] matrix) {
2 ArrayList<Integer> result = new ArrayList<Integer>();
3 if(matrix == null || matrix.length == 0)
4 return result;
5
6 int m = matrix.length;
7 int n = matrix[0].length;
8
9 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;
}
Reference:http://www.programcreek.com/2013/01/leetcode-spiral-matrix-java/
相关文章推荐
- LeetCode – Spiral Matrix (Java)
- [LeetCode][Java] Spiral Matrix
- Spiral Matrix II leetcode java
- 牛客:剑指offer:顺时针打印矩阵 (Java)(同leetcode的spiral matrix i 和ii)
- Java for LeetCode 059 Spiral Matrix II
- leetcode-java-59. Spiral Matrix II
- 【LeetCode-面试算法经典-Java实现】【059-Spiral Matrix II(螺旋矩阵II)】
- [leetcode]54. Spiral Matrix(Java)
- (Java)LeetCode-59. Spiral Matrix II
- [leetcode-59]spiral matrixII(java)
- leetcode:Spiral Matrix 【Java】
- [Leetcode] Spiral Matrix II (Java)
- Leetcode: Spiral Matrix. Java
- 【Leetcode】Spiral Matrix 一 和 二 in JAVA
- leetcode JAVA Spiral Matrix II 难度系数3 3.19
- Leetcode 54. Spiral Matrix (Medium) (java)
- [Leetcode] Spiral Matrix (Java)
- 【LeetCode-面试算法经典-Java实现】【054-Spiral Matrix(螺旋矩阵)】
- [LeetCode] Spiral Matrix
- [Leetcode] Spiral Matrix