思路
1. 一圈圈的列印,開始點為左上角(0,0)
1. 第一圈:(0,0)
2. 第二圈:(1,1)
3. 第n圈:(n,n)
2. 總共可以列印多少圈,n為行與列的一半,超出就終止
python實現
defprint_one_circle(array_input, rows, cols, start):
ret =
if len(array_input) ==0:
return
ret #列數
end_x = cols - 1 -start
#行數end_y = rows - 1 -start
#從左往右列印
for i in range(start, end_x+1):
#從上往下列印
if start
for i in range(start+1, end_y+1):
#從右往左列印
if start < end_y and start
for i in range(end_x - 1, start-1, -1):
#從下往上列印
if start < end_y - 1 and start
for i in range(end_y - 1, start, -1):
return
retdef
print_matrix(array_input):
ret =
if len(array_input) ==0:
return
ret rows =len(array_input)
cols =len(array_input[0])
start =0
while rows > 2*start and cols > 2*start:
tmp =print_one_circle(array_input, rows, cols, start)
ret +=tmp
start += 1
return
retif
__name__ == "
__main__":
array_input = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
print(print_matrix(array_input))
順時針列印陣列
面試題20 順時針列印矩陣 題目 輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。例如如果輸入如下矩陣 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,1,10 我的 如下 ...
順時針轉圈列印陣列
所謂順時針轉圈列印數字,即從外往內列印陣列,一圈一圈地列印,這是劍指offer的第20題。這個題的思路是這樣的 首先,列印的條件是rows 2 start and cols 2 start,然後把列印一圈分為四步 首先從左到右列印一行,這一步是任意情況都要執行的,即使只有1行1列 然後從上到下列印一...
4 陣列 順時針列印陣列
思路 首先判斷迴圈退出的條件 5x5 矩陣 2 2 6 6 2 2 只要col 2 k row 2 k k k 最後一次列印的起始位置 然後迴圈 列印陣列 上面一行 沒有限制條件 右面一列 只有中止行數 起始行數 下面一行 中止行數 起始行數 中止列數 起始列數至少兩行兩列 最左邊一列 中止行數 起...