python-BFS(广度优先搜索)算法套路框架

参考自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
'''
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值