算法题_将数组中的0都放置在数组末尾

题目:将数组中的0都放置在数组末尾,其他元素保持顺序不变。要求时间复杂度为 O ( n ) O(n) ,空间复杂度为常数。

思路:我们可以用双指针进行遍历,一个指针指向0,一个指针指向非0元素。并将这两个指针对应的元素进行交换,接着在进行遍历。

接下来我们用C++进行编程:

void ZeroToEnd(int* numbers, int length)
{
	if(numbers == nullptr || length <=0)
		return;

	for(int i = 0; i < length ; i++)
	{
		if(numbers[i] == 0)
		{
			int j = i;
			while(numbers[j] == 0)
				j++;
			if(numbers[j] != 0)
			{
				temp = numbers[j];
				numbers[j] = numbers[i];
				numbers[i] = temp;
				i = j;
			}
		}
	}
}
发布了156 篇原创文章 · 获赞 48 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Rocky6688/article/details/105066627