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