参考自
labuladong的算法小抄
def BFS(start, target):
queue = collections.deque() # 核心数据结构-队列
visited = set() # 记录走过的路径,避免走回头路--使用集合,检索速度更快
queue.append(start)
visited.add(start)
step = 0 # 记录扩散的步数
while queue:
size = len(queue) # 将当前队列中的所有节点向四周扩散
for i in range(size):
cur = queue.popleft()
if cur == target:
return step
for node in cur: # 将cur的相邻节点加入队列
if node not in visited:
queue.append(node)
visited.add(node)
step += 1
return step
附-力扣-752 list列表与set集合的查询速度比较
参考链接https://blog.csdn.net/weixin_38246633/article/details/85887708
import time
if __name__ == '__main__':
query_list = [-60000, -6000, -600, -60, -6, 0, 6, 60, 600, 6000, 60000]
test_list = list()
test_set = set()
for i in range(100000000):
test_list.append(i)
test_set.add(i)
start = time.time()
for value in query_list:
if value in test_list:
continue
end_list = time.time()
for value in query_list:
if value in test_set:
continue
end_set = time.time()
print("列表查询时间为:%f"%(end_list-start))
print("集合查询时间为:%f"%(end_set-end_list))
'''
列表查询时间为:4.539767s
集合查询时间为:0.000000s
'''