gpt4 book ai didi

c++ - 从数组中删除奇数

转载 作者:太空狗 更新时间:2023-10-29 23:48:32 24 4
gpt4 key购买 nike

我正在尝试从数组中删除奇数,但不允许我创建一个新数组来存储新值。

所以,如果我有 arr[1,2,3,4,5,6,7,8,9]然后我需要它是 arr[2,4,6,8] 以便 arr[0] 将是 2 而不是 1。

如果不创建一个新数组来存储值,然后用新值将其反馈回原始数组,我似乎无法删除偶数。

如果它是奇数,我曾尝试使 arr[i] = 0 但后来我无法删除 0 并将其替换为下一个偶数。

到目前为止,我有这个:

void removeOdd(int arr[], int& arrSize){
int i, j = 0;
int temp;
int newArrSize;
for(i = 0, newArrSize = arrSize; i < arrSize; i++){
if(arr[i] % 2 != 0){
arr[i] = 0;
}
}
arrSize = newArrSize;
}

最佳答案

// Moves all even numbers into the beginning of the array in their original order
int removeOdd(int arr[], int arrSize) {
int curr = 0; // keep track of current position to insert next even number into
for (int i = 0; i < arrSize; ++i) {
if (arr[i] % 2 == 0) {
arr[curr++] = arr[i];
}
}
return curr;
}

int main() {
int arr[10] = { 0,1,2,3,4,5,6,7,8,9 };
int newSize = removeOdd(arr, 10);
for (int i = 0; i < newSize; ++i) {
std::cout << arr[i] << " ";
}
}

0 2 4 6 8

你可能想使用std::vector:

void removeOdd(std::vector<int>& arr) {
int curr = 0;
for (int i = 0; i < (int)arr.size(); ++i) {
if (arr[i] % 2 == 0) {
arr[curr++] = arr[i];
}
}
arr.resize(curr);
}

int main() {
std::vector<int> arr = { 0,1,2,3,4,5,6,7,8,9 };
removeOdd(arr);
for (int number : arr) {
std::cout << number << " ";
}
}

关于c++ - 从数组中删除奇数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57781425/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com