关于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)。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐