题目:
给定一个数组
nums
,编写一个函数将所有0
移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。
输入: nums =[0,1,0,3,12]
输出:[1,3,12,0,0]
算法:
index为目前指向的元素,从头开始遍历,每次找到不为零的元素之后就赋值给index位置,最后将index之后的所有原始全部赋值为0即可。
相当于把找0,变为找非0。
答案:
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int n = nums.size();
int index = 0;
for(int i=0;i<n;i++)
{
if(nums[i]!=0)
{
nums[index] = nums[i];
index++;
}
}
for(int j=index;j<n;j++)
{
nums[j] = 0;
}
}
};