|
发表于 2019-12-18 21:33:16
|
显示全部楼层
楼主,示例1的输出把逗号漏掉了真的好吗?
- def solve(n:int)->list:
- def get_pos():
- side = [0,n,0,n]#[上,下,左,右]
- y = x = 0
- while side[1]-side[0] or side[3]-side[2]:#未完
- for y in range(side[2],side[3]):#向右
- yield (x,y)
- else:
- side[0] += (1 if side[0]<side[1] else 0)
- for x in range(side[0],side[1]):#向下
- yield (x,y)
- else:
- side[3] -= (1 if side[3]>side[2] else 0)
- for y in range(side[3]-1,side[2]-1,-1):#向左
- yield (x,y)
- else:
- side[1] -= (1 if side[1]>side[0] else 0)
- for x in range(side[1]-1,side[0]-1,-1):#向上
- yield (x,y)
- else:
- side[2] += (1 if side[2]<side[3] else 0)
- res = [[0]*n for i in range(n)]
- num = 1
- for pos in get_pos():
- x,y = pos
- res[x][y] = num
- num += 1
- return res
- if __name__ == '__main__':
- print('示例1 输出:',solve(2))
- print('示例2 输出:',solve(3))
- print('自测 输出:',solve(1),solve(0))
复制代码
我来康康差不多的逻辑,楼主能变出什么花儿来
时间复杂度应当为 O(n^2) |
评分
-
查看全部评分
|