演算法題 順時針列印陣列

2022-07-10 01:09:10 字數 1332 閱讀 6558

思路

1. 一圈圈的列印,開始點為左上角(0,0)

1. 第一圈:(0,0)

2. 第二圈:(1,1)

3. 第n圈:(n,n)

2. 總共可以列印多少圈,n為行與列的一半,超出就終止

python實現

def

print_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 最後一次列印的起始位置 然後迴圈 列印陣列 上面一行 沒有限制條件 右面一列 只有中止行數 起始行數 下面一行 中止行數 起始行數 中止列數 起始列數至少兩行兩列 最左邊一列 中止行數 起...