283. 移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
========================================================
用双指针,时间复杂度是O(n),空间复杂度O(1)
上代码:
class Solution { public: void moveZeroes(vector<int>& nums) { if (nums.size() <= 1) return; int a = 0, b = 1; while (b < nums.size()&&a<nums.size()) { if (nums[a] == 0 && nums[b] != 0) { nums[a] = nums[b]; nums[b] = 0; } if (!(nums[a] == 0 && nums[b] == 0&&b!= nums.size() - 1)) a++; if (nums.size() - 1 != b) b++; } } };