797、所有可能的路径
class Solution(object):
def allPathsSourceTarget(self, graph):
"""
:type graph: List[List[int]]
:rtype: List[List[int]]
"""
res = list()
n = len(graph)
def dfs(start,tmp):
if start==n-1:
res.append(tmp[:])
return
l = graph[start]
for node in l:
tmp.append(node)
dfs(node,tmp)
tmp.pop()
dfs(0,[0])
return res
回溯法
https://zhuanlan.zhihu.com/p/308398438
https://blog.csdn.net/weixin_45642918/article/details/108696370
class Solution(object):
def __init__(self):
self.s = []
self.result = []
def subsets(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
ans = []
tmp = []
n = len(nums)
def helper(idx,depth):
if depth == n:
ans.append(tmp[:])
return
tmp.append(nums[idx])
helper(idx+1,depth+1)
tmp.pop()
helper(idx+1,depth+1)
helper(0,0)
return ans
class Solution(object):
def subsetsWithDup(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
ans = []
tmp = []
depth = 0
n = len(nums)
def helper(dix, depth):
if depth == n:
tmp1 = sorted(tmp)
if tmp1[:] not in ans:
ans.append(tmp1[:])
return
tmp.append(nums[dix])
helper(dix+1,depth+1)
tmp.pop()
helper(dix+1,depth+1)
helper(0,0)
return ans
这两道题tmp[:]是取值,否则随着tmp的改变ans也会改变…