今天刷題食拜,碰到一個(gè)需要斜著遍歷數(shù)組的題目猜扮,記錄一下思路。
1. 第一種情況
遍歷方向如圖所示监婶,輸出結(jié)果應(yīng)該是:[1,7,13,19,25,2,8,14,20,3,9,15,4,10,5]
如果你一開(kāi)始不知道怎么做旅赢,可以先把對(duì)應(yīng)的index寫(xiě)出來(lái)找規(guī)律。用A表示數(shù)組惑惶。
0 line:
A[0][0], A[1][1], A[2][2], A[3][3], A[4][4]
1 line
A[0][1], A[1][2], A[2][3], A[3][4]
2 line
A[0][2], A[1][3], A[2][4]
3 line
A[0][3], A[1][4]
4 line
A[0][4]
那么就可以看出煮盼,第一維坐標(biāo)范圍每次減少1,第二維坐標(biāo)每次從當(dāng)前l(fā)ine開(kāi)始遞增带污。用偽代碼可能更好理解:
n=size
i=range(n), j=range(n-i), k=range(i,n)
n = len(A)
for i in range(n):
k = i
for j in range(n-i):
print(A[j][k])
k += 1
2. 第二種情況
輸出結(jié)果結(jié)果應(yīng)該是:[5,9,13,17,21,4,8,12,16,3,7,11,2,6,1]
沒(méi)有思路僵控,就先把坐標(biāo)列出來(lái),找規(guī)律鱼冀,代碼如下:
n = len(A)
for i in range(n):
k = n - i - 1
for j in range(n-i):
print(A[j][k])
k -= 1
好了报破,對(duì)于其他情況,只有耐下心來(lái)找出規(guī)律千绪,代碼很快就能寫(xiě)出來(lái)充易。