https://leetcode.com/problems/spiral-matrix-ii/
2015-04-27 11:35
316 查看
https://leetcode.com/problems/spiral-matrix-ii/
先把n2个数字都放在list里 输出了就删除
有一个记录层数的变量 每输出一层就+1
这样才能确定将数字 从哪里开始 输出在具体哪个位置
还有一个记录还剩多少层的变量 还剩2层和1层的时候特殊处理
注意初始化一个n*n的数组的方法
solution = [([0] * n) for i in range(n)]
依旧是注意边界和数组下表的确定 n, 1, time,i什么的都要考虑清楚
class Solution:
# @return a list of lists of integer
def generateMatrix(self, n):
list=[]
solution=[]
for i in range(n**2):
list.append(i+1)
solution = [([0] * n) for i in range(n)]
time=0
x=n
while x>0:
if x>2:
for i in range(time,n-time):# fill in the first line
solution[time][i]=list[i-time]
list=list[n-time-time-1:]
for i in range(time+1,n-time-1): #fill in the right line
solution[i][n-time-1]=list[i-time]
list=list[n-time-time-1:]
for i in range(time,n-time)[::-1]: #fill in the last line
solution[n-time-1][i]=list[n-time-1-i]
list=list[n-time-time-1:]
for i in range(time+1,n-time-1)[::-1]:
solution[i][time]=list[n-time-1-i]
list=list[n-time-time-1:]
x=x-2
time=time+1
elif x==2:
for i in range(time,n-time):# fill in the first line
solution[time][i]=list[i-time]
list=list[2:]
for i in range(time,n-time)[::-1]: #fill in the last line
solution[n-time-1][i]=list[n-time-1-i]
x=x-2
time=time+1
else:#n==1
solution[time][time]=list[0]
x=x-2
time=time+1
return solution
先把n2个数字都放在list里 输出了就删除
有一个记录层数的变量 每输出一层就+1
这样才能确定将数字 从哪里开始 输出在具体哪个位置
还有一个记录还剩多少层的变量 还剩2层和1层的时候特殊处理
注意初始化一个n*n的数组的方法
solution = [([0] * n) for i in range(n)]
依旧是注意边界和数组下表的确定 n, 1, time,i什么的都要考虑清楚
class Solution:
# @return a list of lists of integer
def generateMatrix(self, n):
list=[]
solution=[]
for i in range(n**2):
list.append(i+1)
solution = [([0] * n) for i in range(n)]
time=0
x=n
while x>0:
if x>2:
for i in range(time,n-time):# fill in the first line
solution[time][i]=list[i-time]
list=list[n-time-time-1:]
for i in range(time+1,n-time-1): #fill in the right line
solution[i][n-time-1]=list[i-time]
list=list[n-time-time-1:]
for i in range(time,n-time)[::-1]: #fill in the last line
solution[n-time-1][i]=list[n-time-1-i]
list=list[n-time-time-1:]
for i in range(time+1,n-time-1)[::-1]:
solution[i][time]=list[n-time-1-i]
list=list[n-time-time-1:]
x=x-2
time=time+1
elif x==2:
for i in range(time,n-time):# fill in the first line
solution[time][i]=list[i-time]
list=list[2:]
for i in range(time,n-time)[::-1]: #fill in the last line
solution[n-time-1][i]=list[n-time-1-i]
x=x-2
time=time+1
else:#n==1
solution[time][time]=list[0]
x=x-2
time=time+1
return solution
相关文章推荐
- https://leetcode.com/problems/remove-duplicates-from-sorted-array-ii/
- https://leetcode.com/problems/single-number-ii/
- https://leetcode.com/problems/spiral-matrix/
- https://leetcode.com/problems/search-in-rotated-sorted-array-ii/
- leetcode https://oj.leetcode.com/problems/jump-game-ii/
- https://leetcode.com/problems/trapping-rain-water/
- https://leetcode.com/problems/add-two-numbers/
- https://leetcode.com/problems/remove-duplicates-from-sorted-array/
- https://leetcode.com/problems/longest-valid-parentheses/
- https://oj.leetcode.com/problems/majority-element/
- leetcode shttps://oj.leetcode.com/problems/surrounded-regions/
- https://leetcode.com/problems/count-and-say/
- https://leetcode.com/problems/multiply-strings/
- ?????????https://leetcode.com/problems/largest-rectangle-in-histogram/
- https://oj.leetcode.com/problems/majority-element/
- https://leetcode.com/problems/search-a-2d-matrix/
- https://leetcode.com/problems/divide-two-integers/
- https://leetcode.com/problems/two-sum/
- https://leetcode.com/problems/zigzag-conversion/
- https://leetcode.com/problems/search-for-a-range/