代码随想录——双指针(一)

简介: 代码随想录——双指针(一)

一.移动零

解法一:模拟

func moveZeroes(nums []int)  {
    n:=len(nums)
    l,r:=0,1
    for r<n&&l<n{
        if nums[r]==0{
            if nums[l]!=0{
                l++
                r++
            }else{
                r++
            }
        }else if nums[l]==0{
            nums[l],nums[r]=nums[r],nums[l]
            l++
            r++
        }else{
            l++
            r++
        }
    }
}

二.双指针

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

二.有序数组的平方

解法一:暴力排序

func sortedSquares(nums []int) []int {
    n:=len(nums)
    for i:=0;i<n;i++{
        nums[i]=nums[i]*nums[i]
    }
    sort.Ints(nums)
    return nums
}

解法二:双指针

func sortedSquares(nums []int) []int {
    n:=len(nums)
    k:=n-1
    res:=make([]int,n)
    l,r:=0,n-1
    for l<=r{
        if nums[l]+nums[r]<0{
            res[k]=nums[l]*nums[l]
            k-=1
            l++
        }else{
            res[k]=nums[r]*nums[r]
            k-=1
            r--
        }
    }
    return res
}


相关文章
|
存储 C语言
函数指针数组:更高效的代码实现方式——指针进阶(二)
函数指针数组:更高效的代码实现方式——指针进阶(二)
69 0
|
小程序 算法
如何降低代码的冗余度(指针的妙用)——探索指针数组,数组指针,函数指针,函数指针数组,回调函数的奥妙
如何降低代码的冗余度(指针的妙用)——探索指针数组,数组指针,函数指针,函数指针数组,回调函数的奥妙
62 0
|
7月前
|
C语言
C语言指针带代码
C语言指针带代码
60 3
|
2月前
|
存储 搜索推荐 C语言
深入C语言指针,使代码更加灵活(二)
深入C语言指针,使代码更加灵活(二)
|
2月前
|
存储 程序员 编译器
深入C语言指针,使代码更加灵活(一)
深入C语言指针,使代码更加灵活(一)
|
2月前
|
C语言
深入C语言指针,使代码更加灵活(三)
深入C语言指针,使代码更加灵活(三)
深入C语言指针,使代码更加灵活(三)
|
4月前
|
存储 大数据 测试技术
掌握 GoLang 中的指针:高效代码的提示和技巧
掌握 GoLang 中的指针:高效代码的提示和技巧
|
6月前
|
Go C++
代码随想录——双指针/滑动窗口(二)
代码随想录——双指针/滑动窗口(二)
|
6月前
|
Go C++
代码随想录——双指针与滑动窗口(四)
代码随想录——双指针与滑动窗口(四)
|
6月前
|
Go C++
代码随想录——双指针/滑动窗口(三)
代码随想录——双指针/滑动窗口(三)