题目
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:
必须在原数组上操作,不能拷贝额外的数组。
尽量减少操作次数。
解题(双指针)
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int len = nums.size();
int left=0,right=0,temp=0;
//考虑到vector首为0的情况,所以左右指针都是从0开始
while(right<len) {
if(nums[right]) {
//如果不为0,则交换左右指针的数值
temp = nums[right];
nums[right] = nums[left];
nums[left] = temp;
left++;
}
right++;
}
}
};```