46.全排列
class Solution:
def permute(self, nums: List[int]) -> List[List[int]]:
def dfs(path,j):
if(j==len(nums)):
ans.append(path[:]) # 如果有pop语句的话,就必须加上[:],这是为什么呢
return
for i in range(len(nums)):
if nums[i] not in path:
path.append(nums[i])
dfs(path,j+1)
path.pop(-1)
ans=[]
dfs([],0)
# print(ans)
return ans
417.太平洋大西洋
class Solution:
def pacificAtlantic(self, heights: List[List[int]]) -> List[List[int]]:
def dfs(x,y,point):
point.append((x,y))
direction = [[-1,0],[1,0],[0,1],[0,-1]]
for d in direction:
nx=x+d[0]
ny=y+d[1]
if nx>=0 and ny>=0 and nx<len(heights) and ny<len(heights[0]) and heights[nx][ny]>=heights[x][y] and (nx,ny) not in point:
dfs(nx,ny,point)
point=[]
for i in range (len(heights[0])):
dfs(0,i,point)
for i in range (len(heights)):
dfs(i,0,point)
print(point)
point2=[]
for i in range (len(heights[0])):
dfs(len(heights)-1,i,point2)
for i in range (len(heights)):
dfs(i,len(heights[0])-1,point2)
print(point2)
print(set(point2) & set(point))
return list(set(point2) & set(point))
为什么每次point都重新开始遍历