leetcode-26-删除排序数组中的重复项

leetcode-26-删除排序数组中的重复项

原题链接:删除排序数组中的重复项


人一我十, 人十我百,追逐青春的梦想,怀着自信的心,永不言弃!


分析

由于是一个有序数组,并且题目中要求我们使用\(O(1)\) 的空间复杂度来解决此问题,那么我们可以申请只需要申请一个id变量作为新数组的索引即可,同时我们利用利用一个\(pre\)变量记录每一个出现的不同的数字

我们只需要挨个遍历数组中的元素,每遇到一个不同的数字就进行变量切换。同时覆盖之前的元素即可。

经验/总结

  • 在Go语言中不可以像C/C++ 一样直接进行类似于nums[id++]的操作,必须进行分解

  • 多个变量赋值时采用\(a , b := 0 , 0\) 的赋值方式更为简便

  • 同时leetcode的大多数问题应该注意空数组/空集合的特殊情况

AC 代码

code

func removeDuplicates(nums []int) int {
    if len(nums) == 0{
        return 0;
    }
    pre , id := nums[0] , 1
    for i := 1;i < len(nums); i++{
        if nums[i] != pre{
            nums[id] = nums[i];
            pre = nums[i]
            id++;
        }
    }
    return id;
}
posted @ 2020-11-14 22:11  _starsky  阅读(76)  评论(0编辑  收藏  举报