Skip to content

Latest commit

 

History

History

864.Shortest-Path-to-Get-All-Keys

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

864.Shortest-Path-to-Get-All-Keys

传统的BFS是不允许重复访问相同的节点的,否则重复的元素会不停地加入队列,造成爆炸。但明显可以看出,这道题的解可能需要多次访问一个grid。怎么处理呢?

其实同一个grid被重复走过并不要紧,只要它所携带的“状态”不同即可。什么是“状态”呢?就是可以理解为身上带有了几把钥匙。我第一次经过A点的时候一把钥匙都没有;但第二次经过A点的时候,身上多了一把钥匙,这是完全合理的:比如说第一次经过A点是为了进一个死胡同取钥匙,现在再走回头路,是为了出来取解对应的某个锁。相反,如果经过同一个点的时候,“状态”一点都没变的话,显然第二次的路过是完全没有意义的,所以就不会加入队列。

这道题和847.Shortest Path Visiting All Nodes的解法非常相似。在那题中,相同的node可以在BFS的过程中重复经过,只要对应的(已经访问过的节点)“状态”不一样即可。这两题可以一起体会。

Leetcode Link