题目描述
编写函数将数组中的所有0移动到数组后面,保持前面各个元素相对位置不变,要求原地操作。
样例
输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]
算法1
(遍历挑选)
遍历数组,挑选出满足条件的元素,这里的条件是:遍历过程中,只要元素非0,就选中,最后剩下的空间用0补齐即可。
时间复杂度
O(n)
C++ 代码
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int n = 0;
for(int i = 0; i < nums.size(); i++){
if(nums[i] != 0) nums[n ++] = nums[i];
}
while(n < nums.size()) nums[n ++] = 0;
}
};