题目要求:在不改变数组中元素顺序的前提下,将数组中的零元素移至数组末尾;
version one
由于题目过于简单,这里就只贴出一种方案,复杂度为o(n),先遍历数组,将非零元素依次填充,最后将数组尾后补零,直到填充满数组为止。唯一的技巧就是用一个 size_t变量来统计数组当前的位置。
void moveZeroes(vector<int>& nums) {
// Write your code here
vector<int>::iterator it;
size_t pos = 0;
for(it = nums.begin(); it != nums.end(); it++)
{
if(*it !=0)
{
nums[pos++] = *it;
}
}
for(; pos != nums.size(); pos++)
{
nums[pos] =0;
}
}
本文介绍了一种简单有效的算法,可以在保持数组元素原有顺序的情况下,将所有零元素移动到数组的末尾。该算法首先遍历数组并将非零元素放置在数组的前部,然后在数组的剩余位置填充零。
1万+

被折叠的 条评论
为什么被折叠?



