您的位置:首页 > Web前端

剑指offer——顺时针打印矩阵

2017-07-02 17:53 239 查看
import java.util.ArrayList;
public class Solution {
public static ArrayList<Integer> printMatrix(int [][] matrix) {
if(matrix == null) return null;

ArrayList<Integer> arrayList = new ArrayList<>();

int up_limit = 0;
int down_limit = matrix.length-1;
int left_limit = 0;
int right_limit = matrix[0].length-1;

//保证有数字会继续输出
while (up_limit <= down_limit && left_limit <= right_limit) {

//从左到右打印
if(up_limit <= down_limit) {
for(int i = left_limit;  i <= right_limit; ++i)
//System.out.print(matrix[up_limit][i] + " ");
arrayList.add(matrix[up_limit][i]);
//上边界加1
up_limit = up_limit +1;
}

//从上到下打印

if(right_limit >= left_limit) {
for(int i = up_limit; i <= down_limit; ++i){
//    System.out.print(matrix[i][right_limit] + " ");
arrayList.add(matrix[i][right_limit]);
}
//右边界-1
right_limit = right_limit - 1;
}

//从右到左打印
if(down_limit >= up_limit) {
for(int i = right_limit; i >= left_limit; --i) {
//System.out.print(matrix[down_limit][i] + " ");
arrayList.add(matrix[down_limit][i]);
}
//下边界-1
down_limit = down_limit - 1;
}

if(left_limit <= right_limit) {
//从下到上打印
for(int i = down_limit; i >= up_limit; --i) {
//System.out.print(matrix[i][left_limit] + " ");
arrayList.add(matrix[i][left_limit]);
}
//左边界+1
left_limit = left_limit + 1;
}
}
return arrayList;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  matrix arraylist