#coding=utf-8
#点评:
#递归思想加层次遍历,很经典的解题模板思想 20181220
class Solution(object):
def numSquares(self, n):
"""
:type n: int
:rtype: int
"""
pair = (n,0)
queue = []
queue.append(pair)
while queue:
curPair = queue.pop(0)
num = curPair[0]
step = curPair[1]
if num == 0:
return step
for i in range(1,num+1):
if num - i *i >= 0:
nextPair = (num-i*i,step+1)
queue.append(nextPair)
else:
break
class Solution2(object):
def numSquares(self, n):
"""
:type n: int
:rtype: int
"""
pair = (n, 0)
queue = []
queue.append(pair)
#matrix = [[0 for i in range(3)] for i in range(3)]
visit = [0 for i in range(n+1)]
visit[n] = 1
while queue:
curPair = queue.pop(0)
num = curPair[0]
step = curPair[1]
if num == 0:
return step
for i in range(1, num + 1):
nextNum = num - i*i
if nextNum >= 0:
if visit[nextNum] == 0:
nextPair = (nextNum, step + 1)
queue.append(nextPair)
visit[nextNum] = 1
else:
break
class Solution3(object):
def numSquares(self, n):
"""
:type n: int
:rtype: int
"""
pair = (n, 0)
queue = []
queue.append(pair)
#matrix = [[0 for i in range(3)] for i in range(3)]
visit = [0 for i in range(n+1)]
visit[n] = 1
while queue:
curPair = queue.pop(0)
num = curPair[0]
step = curPair[1]
if num == 0:
return step
for i in range(1, num + 1):
nextNum = num - i*i
if nextNum >= 0:
if visit[nextNum] == 0:
if nextNum == 0:
return step+1
nextPair = (nextNum, step + 1)
queue.append(nextPair)
visit[nextNum] = 1
else:
break
# 动态规划
class Solution4(object):
def numSquares(self, n):
return self.squareNum(n)
def squareNum(self, n):
self.memo = [n for i in range(n + 1)]
self.memo[0] = 0
self.memo[1] = 1
# #memo[2]
# for i in range(1, 2):
# if n - i ** 2 >= 0:
# self.memo[2] = min(self.memo[2],1+self.memo[n - i ** 2])
#
#
# #memo[3]
# for i in range(1, 3):
# if n - i ** 2 >= 0:
# self.memo[3] = min(self.memo[3],1+self.memo[n - i ** 2])
for i in range(1,n+1):
for j in range(1,i):
if i - j ** 2 >= 0:
self.memo[i] = min(self.memo[i], 1 + self.memo[i - j ** 2])
return self.memo[n]s = Solution2()print s.numSquares(13)
栈和队列_leetcode279-经典的层次遍历
猜你喜欢
转载自www.cnblogs.com/lux-ace/p/10547443.html
今日推荐
周排行