c_cpp 就地,将数组中的副本移动到最后。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 就地,将数组中的副本移动到最后。相关的知识,希望对你有一定的参考价值。

// idea: always compare current item with all previous items. If current appears before, 
// it means the current is a duplicate. Then swap it with the tail.

void move_duplicates_to_end(vector<int> &A) {
    if(A.empty()) return;
    int i = 0, tail = A.size()-1;
    while(i <= tail) {
        bool has_duplicate = false;
        for(int k=0; k<i; k++) {
            if(A[k] == A[i]) {
                has_duplicate = true;
                break;
            }
        }
        if(has_duplicate == false) i++;
        else {
            swap(A[i], A[tail]);
            tail--;
        }
    }
}

以上是关于c_cpp 就地,将数组中的副本移动到最后。的主要内容,如果未能解决你的问题,请参考以下文章

在python中将所有零移动到数组的末尾

JS 数组方法

数组(Array)的操作

Java:就地对 ArrayList 进行排序

11将数组中的 0 移动到末尾

C# 就地将 `int[]` 数组转换为 `byte[]` 数组