力扣链接:https://leetcode-cn.com/probl…
解题思路:
- 这道题尽管比较简单,然而其实也是十分奇妙的,能够用双指针的解法
- 首先定义快慢两个指针,初始化都为数组的第一个元素,快指针遍历整个数组,遇到不为 0 的数字,跟慢指针调换地位,此时慢指针加一,如果进入不了整个不为 0 的条件,那么快指针加一
- 这样就保护了一个慢指针和快指针之间的为 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++
}
}