劍指offer 29 順時針列印矩陣

2021-09-29 10:29:34 字數 785 閱讀 2333

分析:每次列印一圈,用start來確定起始列印的點,從0開始,每次增加1,中點是最後列印的乙個點,因此迴圈條件是start2 < columns && start2 < rows,如果用start <= columns/2 && start <= rows/2會在5*2的時候出錯。

列印一圈數字有四個方向:

從左到右

從上到下:前提是兩行以上,也就是起始行號要小於終止行號

從右到左:前提是兩行以上和兩列以上,因此起始行號小於終止行號,起始列號小於終止列號

從下往上:前提是三行以上和兩列以上,因此起始行號小於終止行號-1,起始列號小於終止列號特別注意:避免重複列印開頭的元素,因此要特別注意迴圈的起始位置應該是**!

class solution 

return ret;

}void printcircle(vector> matrix,int start,int columns,int rows,vector&ret)

return ret;

}void printonecircle(vector> matrix,int lx,int ly,int rx,int ry,vector& ret)

if(ly == ry)

for(int i=ly;ily;i--)

ret.push_back(matrix[rx][i]);

for(int i=rx;i>lx;i--)

ret.push_back(matrix[i][ly]);

}};

劍指 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 解題過...

劍指 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...