博客主页:看看是李XX还是李歘歘
每天不定期分享一些包括但不限于计算机基础、算法、后端开发相关的知识点,以及职场小菜鸡的生活。
点关注不迷路,总有一些知识点是你想要的
⛽️今天的内容是 Leetcode 283. 移动零 ⛽️
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:
必须在原数组上操作,不能拷贝额外的数组。
尽量减少操作次数。
遍历:每次删除为0的元素,并在数组最后补一个0
func moveZeroes(nums []int) {
// 遍历
index:=0
for i:=0;i
遍历:新数组赋值,之后赋值
func moveZeroes(nums []int) {
lcc := []int{}
for _,val := range nums {
if val!=0 {
lcc = append(lcc,val)
}
}
lyh := make([]int,len(nums)-len(lcc))
lcc = append(lcc,lyh...)
copy(nums,lcc)
}
双指针:
错误:应该保持非零元素的相对顺序不变,下面的将顺序反了
func moveZeroes(nums []int) {
// 双指针--类似快排
slow,fast:=0,len(nums)-1
for slow
正确:用快慢指针
func moveZeroes(nums []int) {
// 双指针-类似直接插入排序--找到不为零的元素,换到数组最前面
slow,fast:=0,0
for fast



