力扣链接: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++
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。