蓝桥杯 ALGO-79 删除数组零元素(水题、数组)

来源:互联网 发布:matlab 一维数组画图 编辑:程序博客网 时间:2024/04/29 23:17

【思路】: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] << " ";}


【AC代码】:vector。iterator失效见STL那个文章。

#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;//inputfor (i = 0; i < n; i++)cin >> a[i];//deletefor (Iter=a.begin(); Iter != a.end(); ){if ((*Iter) == 0)a.erase(Iter);elseIter++;}//outputcout << a.size() << endl;for (Iter=a.begin(); Iter != a.end(); Iter++){cout << (*Iter) << " ";}}



0 0
原创粉丝点击