题目
思路
使用双指针技巧,左指针指向下一个非零元素应放置的位置,右指针遍历数组;当右指针遇到非零元素时,与左指针交换并移动左指针。
复杂度
- 时间复杂度: O(n)
- 空间复杂度: O(1)
代码
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int l = 0;int r = 0;
while(r < nums.size()){
if(nums[r])
{
swap(nums[l],nums[r]);
l ++;
}
r++;
}
}
};