Leetcode专题[数组]-283-移动零

力扣链接:https://leetcode-cn.com/probl...
解题思路:

  1. 这道题虽然比较简单,但是其实也是非常巧妙的,可以用双指针的解法
  2. 首先定义快慢两个指针,初始化都为数组的第一个元素,快指针遍历整个数组,遇到不为0的数字,跟慢指针互换位置,此时慢指针加一,如果进入不了整个不为0的条件,那么快指针加一
  3. 这样就维护了一个慢指针和快指针之间的为0的窗口,一直到最后
func moveZeroes(nums []int)  {
    n := len(nums)
    low, high := 0, 0
    for high < n {
        if nums[high] != 0 {
            nums[low], nums[high] = nums[high], nums[low]
            low++
        }
        high++
    }
}

你可能感兴趣的:(golang)