给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

    请注意 ,必须在不复制数组的情况下原地对数组进行操作。
    示例 1:

    输入: nums = [0,1,0,3,12]
    输出: [1,3,12,0,0]
    示例 2:

    输入: nums = [0]
    输出: [0]

    1. /**
    2. * @param {number[]} nums
    3. * @return {void} Do not return anything, modify nums in-place instead.
    4. */
    5. var moveZeroes = function (nums) {
    6. let n = nums.length;
    7. // 定义双指针
    8. let slow = 0;
    9. let fast = 0;
    10. while (fast < n) {
    11. // 不等于0时交换
    12. if (nums[fast] != 0) {
    13. [nums[fast], nums[slow]] = [nums[slow], nums[fast]]
    14. slow += 1
    15. }
    16. fast += 1
    17. }
    18. };

    时间复杂度o(logn) 空间复杂度o(1)
    image.png