劍指Offer—順時針列印矩陣
阿新 • • 發佈:2019-02-09
順時針列印舉證
題目
解題思路:依次讀取上邊框、右邊框、下邊框、左邊框。讀取之後行列變數進行改變。
/** * 依次讀取上邊框、右邊框、下邊框、左邊框 * 讀取之後行列變數進行改變 * @param matrix * @return */ public ArrayList<Integer> printMatrix(int [][] matrix) { ArrayList<Integer> result = new ArrayList<>(); int rowStart = 0,rowEnd = matrix.length-1,colStart = 0,colEnd = matrix[0].length-1; while (rowStart<=rowEnd&&colStart<=colEnd){ //讀取上邊框 for (int i = colStart; i <= colEnd; i++) { result.add(matrix[rowStart][i]); } //讀取右邊框 for (int i = rowStart+1; i <= rowEnd ; i++) { result.add(matrix[i][colEnd]); } //杜絕只有一行的情況 if (rowStart!=rowEnd){ //讀取下邊框 for (int i = colEnd-1; i >= colStart ; i--) { result.add(matrix[rowEnd][i]); } } //杜絕只有一列的矩陣出現重讀 if (colStart!=colEnd){ //讀取左邊框 for (int i = rowEnd-1; i >rowStart; i--) { result.add(matrix[i][colStart]); } } rowStart++;rowEnd--;colStart++;colEnd--; } return result; }