劍指offer-19:順時針列印矩陣
題目描述
輸入一個矩陣,按照從外向裡以順時針的順序依次列印出每一個數字,例如,如果輸入如下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.
解題思路
- 按照順時針挨著解析矩陣
- 注意邊界判斷,length需要減一,row和col可取
程式碼實現
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printMatrix(int [][] matrix) {
ArrayList<Integer> list = new ArrayList<Integer>();
if (matrix.length == 0 || matrix[0].length == 0) {
return list;
}
int row = 0;
int col = 0;
int rowLength = matrix.length;
int colLength = matrix[0].length;
while (true) {
for (int i = col; i < colLength; i++) {
list.add(matrix[row][i]);
}
row++;
if (rowLength <= row) break;
for (int i = row; i < rowLength; i++) {
list.add(matrix[i][colLength - 1]);
}
colLength--;
if (col >= colLength) break;
for (int i = colLength - 1; i >= col; i--) {
list.add(matrix[rowLength - 1][i]);
}
rowLength--;
if (rowLength <= row) break;
for (int i = rowLength - 1; i >= row; i--) {
list.add(matrix[i][col]);
}
col++;
if (col >= colLength) break;
}
return list;
}
}
相關文章
- 力扣 - 劍指 Offer 29. 順時針列印矩陣力扣矩陣
- 劍指offer面試題29:順時針列印矩陣面試題矩陣
- 劍指 Offer 29-順時針列印矩陣c++矩陣C++
- JZ-019-順時針列印矩陣矩陣
- Python練習-LeetCode 第1篇 順時針列印矩陣PythonLeetCode矩陣
- 劍指offer之順序列印陣列陣列
- [每日一題] 第二十一題:順時針列印矩陣每日一題矩陣
- 第四章:多維陣列和矩陣 --------------- 4.1 基礎題:順時針列印二維陣列陣列矩陣
- 劍指offer:JZ12 矩陣中的路徑矩陣
- 力扣 - 劍指 Offer 12. 矩陣中的路徑力扣矩陣
- 劍指 Offer 12-矩陣中的路徑c++矩陣C++
- 用 Go 劍指 Offer 12. 矩陣中的路徑 (DFS + 回溯)Go矩陣
- 劍指offer之列印超過陣列一半的數字陣列
- 劍指Offer 撲克牌順子
- 矩陣指數的定義矩陣
- 劍指 offer(1) -- 陣列篇陣列
- 【劍指Offer】調整陣列順序使奇數位於偶數前面陣列
- [劍指offer] 把二叉樹列印成多行二叉樹
- 劍指offer面試題12:矩陣中的路徑(Java版已在牛客網AC)面試題矩陣Java
- 劍指 Offer 21. 調整陣列順序使奇數位於偶數前面陣列
- 劍指OFFER-從頭到尾列印連結串列(Java)Java
- 指標-矩陣下三角元素之和指標矩陣
- 巨大的矩陣(矩陣加速)矩陣
- 鄰接矩陣、度矩陣矩陣
- 愛奇藝矩陣管理工具,多個矩陣同時管理矩陣
- 劍指Offer-37-陣列中逆序對陣列
- 奇異矩陣,非奇異矩陣,偽逆矩陣矩陣
- 3. 從尾到頭列印連結串列(劍指offer)
- 劍指 Offer 列印從1到最大n位數c++C++
- 【劍指offer】5.二叉樹的映象和列印二叉樹
- 劍指offer-從尾到頭列印連結串列-phpPHP
- 1434: 矩陣的最大值(指標專題)矩陣指標
- 資料結構:陣列,稀疏矩陣,矩陣的壓縮。應用:矩陣的轉置,矩陣相乘資料結構陣列矩陣
- 【劍指offer】二維陣列中的查詢陣列
- 劍指offer:旋轉陣列的最小數字陣列
- 劍指offer 旋轉陣列的最小數字陣列
- 矩陣矩陣
- 【劍指 Offer 】17. 列印從1到最大的n位數