码迷,mamicode.com
首页 > 编程语言 > 详细

删除数组中等于某个key的所有元素

时间:2015-10-27 21:36:21      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:

题目描述:

给定一个数组和一个值,在原地删除与值相同的数字,返回新数组的长度。

这道题目做暴力的想法就是,用一个指针从头到尾遍历,删除哪个元素就把后面的元素统一向前移动一个位置。但是这样的时间复杂度很大,可能要移动很多的元素。

这里利用快速排序中划分的一种思想:用两个指针,后一个指针做遍历用,前一个指针作为一个tag,表示这个tag之前的元素都满足要求

那么具体的代码:

int removeElement(vector<int> &arr, int elem) 
{
	// write your code here
	int size = arr.size();
	if(size == 0)
	{
		return 0;
	}
	int pre = -1;
	for(int cur = 0; cur < size; ++cur)
	{
		if(arr[cur] != elem)
		{
			++pre;
			if(cur != pre)
			{
				swap(arr[pre], arr[cur]);
			}
		}//if
	}//for
	
	return pre + 1;
}

  

删除数组中等于某个key的所有元素

标签:

原文地址:http://www.cnblogs.com/stemon/p/4915461.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!