给一个数组 nums 写一个函数将 0 移动到数组的最后面,非零元素保持原数组的顺序
样例
给出 nums = [0, 1, 0, 3, 12], 调用函数之后, nums = [1, 3, 12, 0, 0].
冒泡
把0都冒到后面去,这个没写,时间肯定是超的,也算一个思路。
双指针
一根指针遍历找不是0的元素,一根指针指向要替换位置,用不是0的元素把对应的位置一一替换,然后在后边补零。
void moveZeroes(vector<int>& nums) {
size_t i=0;
for(size_t j=0;j<nums.size();j++)
{
if(nums[j]!=0)
{
nums[i]=nums[j];
i++;
}
}
for(;i<nums.size();i++)
{
nums[i]=0;
}
// write your code here
}
网友评论