劍指 Offer 29 順時針列印矩陣

2022-04-11 18:38:18 字數 1159 閱讀 1131

劍指 offer 29. 順時針列印矩陣

迴圈列印二維陣列/矩陣的規律:

從左向右列印,此時上邊界向下移動,行不變,列++

從上向下列印,此時右界向左移動,列不變,行++

從右向左列印,此時下邊界向上移動,行不變,列--

從下向上列印,此時上左界向右移動,列不變,行--

int t=0,b=m-1,l=0,r=n-1;

while(true)

t++;

if(t>b) break;

//從上向下列印,此時右界向左移動,列不變,行++

for(int i=t;i<=b;i++)

r--;

if(l>r) break;

//從右向左列印,此時下邊界向上移動,行不變,列--

for(int i=r;i>=l;i-)

b--;

if(t>b) break;

//從下向上列印,此時上左界向右移動,列不變,行--

for(int i=b;i>=t;i--)

l++;

if(l>r) break;

}

public int spiralorder(int matrix) ;

}

listlist = new arraylist<>();

int top = 0;

int bottom = matrix.length-1;

int left = 0;

int right = matrix[0].length-1;

while(true)

if(++top>bottom)

//從上到下

for(int i=top;i<=bottom;i++)

if(left>--right)

//從右到左

for(int i=right;i>=left;i--)

if(top>--bottom)

//從下到上

for(int i=bottom;i>=top;i--)

if(++left>right)

}return list.stream().maptoint(integer::valueof).toarray();

}

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