给定排序向量找到从负到正的转换
Given sorted vector find transition from negative to positive
给定一个已排序的 std::vector<int>
,我想使用 C++11-STD 函数找到元素从负向正过渡的索引。
我知道我可以使用二进制搜索来实现它,但我对标准库中是否有任何函数感兴趣,类似于一元find_if
,这将有助于此搜索(可能与此有关使用正确的 lambda 表达式)。
你应该找到 0 的 lower_bound:
auto iter = std::lower_bound(vec.begin(), vec.end(), 0);
生成的迭代器将指向您可以插入 0 而不会打乱元素顺序的最早位置。同样,upper_bound
将 return 最右边的此类迭代器。
算法的运行时间是O(logN)
给定一个已排序的 std::vector<int>
,我想使用 C++11-STD 函数找到元素从负向正过渡的索引。
我知道我可以使用二进制搜索来实现它,但我对标准库中是否有任何函数感兴趣,类似于一元find_if
,这将有助于此搜索(可能与此有关使用正确的 lambda 表达式)。
你应该找到 0 的 lower_bound:
auto iter = std::lower_bound(vec.begin(), vec.end(), 0);
生成的迭代器将指向您可以插入 0 而不会打乱元素顺序的最早位置。同样,upper_bound
将 return 最右边的此类迭代器。
算法的运行时间是O(logN)