順時針列印矩陣(牛客網)
阿新 • • 發佈:2018-12-17
題目描述
輸入一個矩陣,按照從外向裡以順時針的順序依次打印出每一個數字,例如,如果輸入如下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 Solution { public ArrayList<Integer> printMatrix(int [][] matrix) { ArrayList<Integer> list = new ArrayList<>(); int N = matrix.length; int M = matrix[0].length; int left = 0; int right = M - 1; int top = 0; int floor = N - 1; while(left <= right && top <= floor){ if(left == right){ for(int i = top; i <= floor; i++){ list.add(matrix[i][left]); } break; } if(top == floor){ for(int i = left; i <= right; i++){ list.add(matrix[top][i]); } break; } for(int i = left; i < right; i++){ list.add(matrix[top][i]); } for(int i = top; i < floor; i++){ list.add(matrix[i][right]); } for(int i = right; i > left; i--){ list.add(matrix[floor][i]); } for(int i = floor; i > top; i--){ list.add(matrix[i][left]); } left++; right--; top++; floor--; } return list; } }
這題給的不是均勻陣列。。。。
加了兩個if判斷不是的情況就可以了