力扣題:LCP 07. 傳遞資訊
阿新 • • 發佈:2020-09-04
https://leetcode-cn.com/problems/chuan-di-xin-xi/
反向回溯
1、反向回溯,可以節省時間,進行到哪一步沒有連線可以直接結束返回0
2、建立字典dic,遍歷relation,將每個點的值作為key,將能夠連線到某個點的所有點組成列表作為value
3、回溯開始,初始值即為old = [n-1], 回溯有可能連線到這個點的所有點作為列表new
4、如果再某一次回溯時即old為空,則說明根本無法到達現在的點,直接輸出0
5、如果old不為空,則遍歷old中每一個元素為key,將字典中的value全部加入new,下一次回溯再把new賦值給old
6、遍歷結束,只要輸出最終的new列表中0的個數即可
`class Solution:
def numWays(self, n: int, relation: List[List[int]], k: int) -> int:
dic = {} for L in relation: if L[1] in dic: dic[L[1]].append(L[0]) else: dic[L[1]] = [L[0]] old = [n-1] for i in range(k): new = [] if not old: return 0 else: for j in old: if j in dic: new += dic[j] old = new else: return new.count(0)
`