这题吸收了别人做的容易理解的作法。写起来有条理多了。代码如下:
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非常不错