关于set中的lower_bound和algorithm头文件中的lower_bound时间复杂度区别
·
关于set中的lower_bound和algorithm头文件中的lower_bound时间复杂度区别
前情
今天做江苏省赛中的I题时,在二分查找中的check函数里,我用了如下形式
auto res=lower_bound(nums.begin(),nums.end(),k-a[i]);
然而却tle了,后来看了题解,题解用的如下形式
auto res=nums.lower_bound(k-a[i]);
总结
set 自带的 lower_bound 和 upper_bound 的时间复杂度为 O(logn)。
但使用 algorithm 库中的 lower_bound 和 upper_bound 函数对 set 中的元素进行查询,时间复杂度为 0(n)。
对于可随机访问的有序容器使用 algorithm 库中的 lower_bound 和 upper_bound 函数时间复杂度为O(logn),
但对于set,multiset这种不能随机访问的有序容器,要用其自带的 lower_bound 和 upper_bound 的时间复杂度才为 O(logn)。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)