注意,这个题目我提交不上噢!显示部分通过,但我改不回来
难度看着不咋地,但是我估计全是坑,可能是范围小了也可能是别的,但我没改了。
6-9删除数组中的0元素
Description
编写函数CompactIntegers,删除数组中所有值为0的元素,其后元素向数组首端移动。注意,CompactIntegers函数需要接收数组及其元素个数作为参数,函数返回值应为删除操作执行后数组的新元素个数。
输入时首先读入数组长度,再依次读入每个元素。
将调用此函数后得到的数组和函数返回值输出。
Input
第一行为一个整形,表示数组长度。
第二行为对应数量的数组元素。
Output
第一行为函数调用后的数组。
第二行为函数调用后的返回值。
Sample Input 1
7 2 0 4 3 0 0 5
Sample Output 1
2 4 3 5 4
这题我两种写法都试过(一种是把零去掉,把后面的数填过来,另一种是下列这样把非零数存进vector容器),但是很遗憾我没有通过
#include <bits/stdc++.h>
#define MAX 1000
using namespace std;
int CompactIntegers(int n, int a[]) {
if (n == 0) {
cout << 0;
return 0;
}
else {
vector<int> sum;
for (int i = 0; i < n; i++) {
if (a[i] != 0) {
sum.push_back(a[i]);
}
}
vector<int>::iterator it;
for (it = sum.begin(); it != sum.end(); it++) {
cout << *it << " ";
}
return sum.size();
}
}
int main() {
int temp[MAX] = {0};
int num;
cin >> num;
for (int i = 0; i < num; i++) {
cin >> temp[i];
}
int index = CompactIntegers(num, temp);
cout << endl;
cout << index << endl;
return 0;
}