题解 | #螺旋矩阵#
螺旋矩阵
http://www.nowcoder.com/practice/7edf70f2d29c4b599693dc3aaeea1d31
import java.util.ArrayList;
public class Solution {
ArrayList<Integer> list = new ArrayList<>();
public ArrayList<Integer> spiralOrder(int[][] matrix) {
if(matrix == null || matrix.length == 0){
return list;
}
int dr = 0,dc = 0;
int tr = matrix.length-1,tc = matrix[0].length-1;
while(dr <= tr && dc <= tc){
mat(matrix,dr++,dc++,tr--,tc--);
}
return list;
}
public void mat(int[][] matrix,int dr,int dc,int tr,int tc){
if(dr == tr){
for(int i = dc;i<=tc;i++){
list.add(matrix[dr][i]);
}
}else if(dc == tc){
for(int i = dr;i<= tr;i++){
list.add(matrix[i][dc]);
}
}else{
for(int i = dc;i<tc;i++){
list.add(matrix[dr][i]);
}
for(int i = dr; i< tr;i++){
list.add(matrix[i][tc]);
}
for(int i = tc;i>dc;i--){
list.add(matrix[tr][i]);
}
for(int i = tr;i>dr;i--){
list.add(matrix[i][dc]);
}
}
}
}
public class Solution {
ArrayList<Integer> list = new ArrayList<>();
public ArrayList<Integer> spiralOrder(int[][] matrix) {
if(matrix == null || matrix.length == 0){
return list;
}
int dr = 0,dc = 0;
int tr = matrix.length-1,tc = matrix[0].length-1;
while(dr <= tr && dc <= tc){
mat(matrix,dr++,dc++,tr--,tc--);
}
return list;
}
public void mat(int[][] matrix,int dr,int dc,int tr,int tc){
if(dr == tr){
for(int i = dc;i<=tc;i++){
list.add(matrix[dr][i]);
}
}else if(dc == tc){
for(int i = dr;i<= tr;i++){
list.add(matrix[i][dc]);
}
}else{
for(int i = dc;i<tc;i++){
list.add(matrix[dr][i]);
}
for(int i = dr; i< tr;i++){
list.add(matrix[i][tc]);
}
for(int i = tc;i>dc;i--){
list.add(matrix[tr][i]);
}
for(int i = tr;i>dr;i--){
list.add(matrix[i][dc]);
}
}
}
}