这题吸收了别人做的容易理解的作法。写起来有条理多了。代码如下:
class Solution(object):
def generateMatrix(self, n):
"""
:type n: int
:rtype: List[List[int]]
"""
if n <= 0:
return []
list1 = []
list2 = []
for i in range(n * n):
list1.append(i + 1)
# print list1
for i in range(n):
list2.append([0] * n)
# print list2
left = 0
right = n - 1
top = 0
button = n - 1
# print list1
while list1 != []:
if left < right:
for i in range(left, right):
list2[top][i] = list1[0]
del list1[0]
for i in range(top, button):
list2[i][right] = list1[0]
del list1[0]
for i in range(right, left, -1):
list2[button][i] = list1[0]
del list1[0]
for i in range(button, top, -1):
list2[i][left] = list1[0]
del list1[0]
if left == right:
list2[left][top] = list1[0]
break
left += 1
right -= 1
top += 1
button -= 1
return list2用了上下左右来控制每次取的数。用来做1非常不错
本文介绍了一种使用Python实现生成矩阵的高效算法。通过上下左右边界控制,该算法可以有序地填充矩阵,实现从1到n*n的数字依次排列。详细步骤包括初始化列表、设置边界并循环填充矩阵。
1126

被折叠的 条评论
为什么被折叠?



