題目描述
輸入一個矩陣,按照從外向裏以順時針的順序依次打印出每一個數字,例如,如果輸入如下4 X 4矩陣: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 則依次打印出數字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
題目鏈接:牛客網
解題思路
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
int[][] numbers = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16}
};
ArrayList list = printMatrix(numbers);
printList(list);
}
public static ArrayList<Integer> printMatrix(int[][] matrix) {
ArrayList<Integer> list = new ArrayList<>();
int r1 = 0;
int r2 = matrix.length - 1;
int c1 = 0;
int c2 = matrix[0].length - 1;
while(r1 <= r2 && c1 <= c2) {
for (int i = c1; i <= c2;i++) {
list.add(matrix[r1][i]);
}
for (int j = r1 + 1;j <= r2;j++) {
list.add(matrix[j][c2]);
}
if (r1 != r2) {
for (int m = c2 - 1;m >= c1;m--) {
list.add(matrix[r2][m]);
}
}
if (c1 != c2) {
for (int n = r2 - 1;n > r1;n--) {
list.add(matrix[n][c1]);
}
}
r1++;
r2--;
c1++;
c2--;
}
return list;
}
public static void printList(ArrayList list) {
for (int i = 0;i < list.size();i++) {
System.out.print(list.get(i) + " ");
}
System.out.println();
}
}