删除数组中等于任何给定 targert 的元素

remove the element in the array which is equal to any given targert

本文关键字:targert 元素 于任何 数组 删除      更新时间:2023-10-16

完整的问题是:

给定一个数组和一个值,就地删除该值的所有实例并返回新的长度。可以更改元素的顺序。超出新长度的内容并不重要。

还有我的代码。

int removeElement(int A[], int n, int elem) {   
    vector<int> B;
    for (int i=0; i<n; i++) {
        if (A[i]!=elem) {
            B.push_back(A[i]);
        }
    }
    return B.size();
}

当我将此代码提交给在线法官时,它告诉我我给出了错误的答案。它响应的测试用例是:

Input: [4,5], 4 
Your Output: [4]
Expected Output: [5]

我想知道为什么,我认为应该是对的,谁能给我一些足够的理由让我理解?

请求是就删除该值的所有实例,即修改 A 指向的数组的内容。您需要返回一个新的长度,以便数组[A, A + new_length)包含所有不等于 elem 的元素。

你误解了他们希望你如何解决问题。他们有一段代码,如下所示:

int main() {
    int array[2] = {4, 5};
    int length = 2;
    // Call the user's function
    int new_length = removeElement(array, length, 4);
    // Validate their output.
    assert(new_length == 1);
    assert(array[0] == 5);
}

代码在第二个断言上失败。