对于一个矩阵,请设计一个算法从左上角(mat[0][0])开始,顺时针打印矩阵元素。 给定int矩阵mat,以及它的维数nxm,请返回一个数组,数组中的元素为矩阵元素的顺时针输出。

来源:互联网 发布:一物降一物 知乎 编辑:程序博客网 时间:2024/06/04 17:50

import java.util.*;

public class Printer {
public int[] clockwisePrint(int[][] mat, int n, int m) {
// write code here
ArrayList list = new ArrayList<>(n * m);
int[] clockwiseArray = new int[n * m];
int left = -1;
int right = m;
int up = 0;
int down = n;

    int total = n * m;    int count = 0;    int j = 0;    int i = 0;    while(true){        for(; j < right; j++){            list.add(mat[i][j]);            count++;        }        right--;        j = right;        i++;        if(count >= total){            break;        }        for(; i < down; i++){            list.add(mat[i][j]);            count++;        }        down--;        i = down;        j--;        if(count >= total){            break;        }        for(;j > left; j--){            list.add(mat[i][j]);            count++;        }        left++;        j = left;        i--;        if(count >= total){            break;        }        for(; i > up; i--){            list.add(mat[i][j]);            count++;        }        up++;        i = up;        j++;        if(count >= total){            break;        }    }    for(int k = 0; k < list.size(); k++){        clockwiseArray[k] = list.get(k);    }    return clockwiseArray;}

}

阅读全文
0 0
原创粉丝点击