【思路】:1.数组移动。2.vector。
【AC代码】:数组移动。
#include <iostream>
#include <algorithm>
#include <vector>
#include <cstdio>
#include <cstring>
using namespace std;
int CompactIntegers(int *p, int n)
{
int i = 0, j = 0;
for (i = 0; i < n; i++)
{
if (0 == p[i])
{
for (j = i+1; j < n; j++)
p[j-1] = p[j];
n--;
i--;
}
}
return n;
}
int main()
{
//freopen("in.txt", "r", stdin);
int n = 0, i = 0;
cin >> n;
int *p = (int*)malloc(n*sizeof(int));
for (i = 0; i < n; i++)
cin >> p[i];
int len = CompactIntegers(p, n);
cout << len << endl;
for (i = 0; i < len; i++)
cout << p[i] << " ";
}
#include <iostream>
#include <algorithm>
#include <vector>
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
//freopen("in.txt", "r", stdin);
int n = 0, i = 0;
cin >> n;
vector<int> a(n);
vector<int> :: iterator Iter;
//input
for (i = 0; i < n; i++)
cin >> a[i];
//delete
for (Iter=a.begin(); Iter != a.end(); )
{
if ((*Iter) == 0)
a.erase(Iter);
else
Iter++;
}
//output
cout << a.size() << endl;
for (Iter=a.begin(); Iter != a.end(); Iter++)
{
cout << (*Iter) << " ";
}
}原文:http://blog.csdn.net/weijj6608/article/details/44632409