首页 > 编程语言 > 详细

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

时间:2015-03-26 09:09:30      阅读:387      评论:0      收藏:0      [点我收藏+]

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



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

原文:http://blog.csdn.net/weijj6608/article/details/44632409

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!