c – 查找数字序列中的间隙

前端之家收集整理的这篇文章主要介绍了c – 查找数字序列中的间隙前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个std :: vector包含一些数字,这些数字没有任何特定的顺序,并且数字之间可能有或没有间隙 – 例如,我可能有{1,2,3,6}或{2,8,4,6}或{1,9,5,2}等.

我想要一个简单的方法来查看这个向量并说“给我最小的数字> = 1,它不会出现在向量中”.所以,

对于上面三个例子,答案分别是4,1和3.

它不是性能关键,列表很短,所以没有任何关于复制列表和排序的问题,例如.

我并没有真正坚持这样做的方法,但我的STL技能严重萎缩,我可以感觉到我要做一些不优雅的事情 – 我很想知道其他人想出了什么.

解决方法

选中的答案使用<为了比较. !=更简单:
int find_gap(std::vector<int> vec) {
    std::sort(vec.begin(),vec.end());
    int next = 1;
    for (std::vector<int>::iterator it = vec.begin(); it != vec.end(); ++it) {
        if (*it != next) return next;
       ++next;
    }
    return next;
}

find_gap(1,5) = 3
find_gap(2) = 1
find_gap(1,3) = 4

我没有传递对向量的引用,因为a)他说时间无关紧要b)所以我不改变原始向量的顺序.

原文链接:https://www.f2er.com/c/117815.html

猜你在找的C&C++相关文章