c++ “挤出”向量中的多个零并保留索引

7gs2gvoe  于 2023-05-02  发布在  其他
关注(0)|答案(1)|浏览(123)

我有一个vectorA,里面有N数字。我想用一个零替换每个出现的多个连续的零,并跟踪没有被删除的元素的索引。
这意味着,最后我会得到一个length <= NvectorB,它只有一个零,其中A有一个或多个连续的零,而A的所有其他元素都是如此。在第三个vectorIndex中,如果A在一行中没有多个零或者省略了出现多个零的索引,我将得到0N-1
例如:
输入:
A = {1,2,0,0,0,1,0,1}
输出
B = {1,2,0,1,0,1}
索引= {0,1,2,5,6,7}
我怎么能这么做

bmp9r5qi

bmp9r5qi1#

我终于让这个工作,也许有人偶然发现这篇文章,并发现这很有帮助:

bool last_was_zero = false;
for (int y = 0; y < N; y++)
{
    if (last_was_zero)
    {
        if (A[y] > 0)
        {
            B.push_back(A[y]);
            C.push_back(y);
            last_was_zero = false;
        }
    }
    else
    {
        B.push_back(A[y]);
        C.push_back(y);
        if (A[y] == 0)
        {
            last_was_zero = true;
        }
    }
}

相关问题