283. 移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
请注意 ,必须在不复制数组的情况下原地对数组进行操作。
示例 1:
输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]
示例 2:
输入: nums = [0]
输出: [0]
思路:
使用双指针,都从左侧开始。
右指针不断向右移动,当遇到非零的数字时,与左指针交换,同时左指针加一。
代码如下:
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int l=0;
int r=0;
while(l<nums.size()&&r<nums.size()){
if(nums[r]!=0){
swap(nums[l],nums[r]);
l++;
}
r++;
}
}
};