Blog.

移动零

Cover Image for 移动零
Bernie
Bernie

283. 移动零

leetcode 链接

思路:

1.快慢指针,

2.定义一个慢指针 slow,一个快指针 fast,当 slow < fast 且 fast < nums.length 时,判断 nums[slow] 是否为 0,如果不为 0,则 slow++,如果为 0 且 nums[fast] 不为 0,则将 nums[slow] 与 nums[fast] 交换,然后 slow++,fast++,如果 nums[fast] 为 0,则 fast++,最后返回 nums 即可。

typescript 解法

/**
 Do not return anything, modify nums in-place instead.
 */
function moveZeroes(nums: number[]): void {
  let slow = 0;
  let fast = 1;

  while (slow < fast && fast < nums.length) {
    if (nums[slow] != 0) {
      slow++;
    } else if (nums[fast] != 0 && nums[slow] == 0) {
      const temp = nums[fast];
      nums[fast] = nums[slow];
      nums[slow] = temp;
      slow++;
    }
    fast++;
  }
}

go 解法

func moveZeroes(nums []int)  {
    slow := 0
    fast := 1
    for slow < fast && fast < len(nums) {
        if nums[fast] != 0 && nums[slow] == 0 {
            nums[slow], nums[fast] = nums[fast], nums[slow]
            slow ++
        } else if nums[slow] != 0 {
            slow ++
        }
        fast ++
     }
}