力扣链接: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++ }}