劍指offer T29順時針列印矩陣

2021-10-07 04:40:08 字數 1259 閱讀 9258

思想:

每一輪按照如下順序去列印:

step1:先列印最上面那一行

step2:再列印最右邊那一列

step3:再列印最下邊那一列(注意這是必須按從右往左的順序列印)

step4:再列印最左邊那一列(注意必須按由下往上的順序列印)

【tips:】注意不要列印重複值

一輪列印結束,將行的區間以及列的區間均內收1位(也就是將整個矩陣內縮一位)),再去列印,直到下標違法時(起始座標》終止座標)為止

class solution 

}//再列印最右邊那一列

for(int j=row+1;j<=rows;j++)

}//再列印最下邊那一列(注意這是必須按從右往左的順序列印)

for(int k=cols-1;k>=col;k--)

}//再列印最左邊那一列(注意必須按由下往上的順序列印)

for(int l=rows-1;l>=row+1;l--)

}//一輪列印完成,將整個矩陣內縮一位

col++;

row++;

cols--;

rows--;

}return res;

}}

思想:最後應該生成1個n*n的矩陣

借助螺旋矩陣-|的遍歷思想

每一輪按照如下順序去列印:

step1:先列印最上面那一行

step2:再列印最右邊那一列

step3:再列印最下邊那一列(注意這是必須按從右往左的順序列印)

step4:再列印最左邊那一列(注意必須按由下往上的順序列印)

【tips:】注意不要列印重複值

一輪列印結束,將行的區間以及列的區間均內收1位(也就是將整個矩陣內縮一位)),再去列印,直到下標違法時(起始座標》終止座標)為止

class solution 

item++;

}//step2

for(int i=row+1;i<=rows;i++)

item++;

}//step3

for(int j=cols-1;j>=col;j--)

item++;

}//step4

for(int i=rows-1;i>row;i--)

item++;

}row++;

col++;

rows--;

cols--;

}return res;

}}

劍指offer 29 順時針列印矩陣

分析 每次列印一圈,用start來確定起始列印的點,從0開始,每次增加1,中點是最後列印的乙個點,因此迴圈條件是start2 columns start2 rows,如果用start columns 2 start rows 2會在5 2的時候出錯。列印一圈數字有四個方向 從左到右 從上到下 前提是...

劍指 Offer 29 順時針列印矩陣

輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。示例 1 輸入 matrix 1,2,3 4,5,6 7,8,9 輸出 1,2,3,6,9,8,7,4,5 示例 2 輸入 matrix 1,2,3,4 5,6,7,8 9,10,11,12 輸出 1,2,3,4,8,12,11,10,9...

劍指Offer 29 順時針列印矩陣

輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。輸入 matrix 1,2,3 4,5,6 7,8,9 輸出 1,2,3,6,9,8,7,4,5 輸入 matrix 1,2,3,4 5,6,7,8 9,10,11,12 輸出 1,2,3,4,8,12,11,10,9,5,6,7 解題過...