python3代码
主要思路是根据“拐弯”次数angel得到下次要走过多少个数字(向上、下、左、右走可以分别归纳成公式),并且由于每走一个数字就记一次,所以以总步数mn作为循环控制条件。
if matrix == []:
ret = []
else:
m = len(matrix)
n = len(matrix[0]) #如果matrix为空,则会出错
print(m)
print(n)
j = 0
i = 0
angel = 0
ret = []
cishu = 0
while cishu < m
n:
if angel % 4 == 0:
flag = n - angel/2 # 向右(n - angel/2)步
for x in range(int(flag)):
if cishu == 0:
print(i, end=',')
print(j)
ret.append(matrix[i][j])
cishu += 1
else:
j += 1
print(i, end=',')
print(j)
ret.append(matrix[i][j])
cishu += 1
angel += 1
elif angel % 4 == 1:
flag = m - (angel+1)/2 # 向下(m - (angel+1)/2)步
for x in range(int(flag)):
i += 1
print(i, end=',')
print(j)
ret.append(matrix[i][j])
cishu += 1
angel += 1
elif angel % 4 == 2:
flag = n - angel/2 # 向左(m - (angel+1)/2)步
for x in range(int(flag),0,-1):
j -= 1
print(i, end=',')
print(j)
ret.append(matrix[i][j])
cishu += 1
angel += 1
else:
flag = m - (angel+1)/2 # 向上(m - (angel+1)/2)步
for x in range(int(flag),0,-1):
i -= 1
print(i, end=',')
print(j)
ret.append(matrix[i][j])
cishu += 1
angel += 1
return ret