Question
Given an array nums, write a function to move all 0’s to the end of it while maintaining the relative order of the non-zero elements.
Example:
Input: [0,1,0,3,12]
Output: [1,3,12,0,0]
Algorithm
- 遇到0怎么处理:用一个变量记录0的个数
p
- 如何使下标
index
移动到正确的位置?- 与前面统计的0的个数有关系:
index - p
- 与前面统计的0的个数有关系:
Code
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int p = 0;
for (int i=0;i<nums.size();i++){
if (nums[i] == 0){
p++;
}
else{
nums[i-p] = nums[i];
}
}
for (int j=nums.size()-p;j<nums.size();j++){
nums[j] = 0;
}
}
};