leetcode之283移动零Golang

解析

将数组中的0元素移动到最后,而其他元素的顺序保持不变,所以我们考虑双指针的做法

第一个指针用于遍历整个数组,如果这个指针遍历到的数组元素不等于0,那么就将这个值存到第二个指针指向的位置,然后将第二个指针向后移动一个位置

最后将第二个指针后面的数组位置全部补上0就可以了

算法

  • 定义指针index,初始值为-1

  • 定义第二个指针,用来遍历数组

    • 如果指向的值不等于0,那么index加1,并且将index指向的数组位置设置为遍历到的这个非0元素

    • 如果指向的值等于0,那么就直接跳过,继续遍历后续原

  • index+1到数组最后,全部赋值为0

代码

func moveZeroes(nums []int) {
    index := -1
    for i := 0; i < len(nums); i++ {
        if nums[i] != 0 {
            index++
            nums[index] = nums[i]
        }
    }
    for i := index + 1; i < len(nums); i++ {
        nums[i] = 0
    }
}

  

 

posted @ 2020-09-14 14:05  胖胖咩  阅读(137)  评论(0)    收藏  举报