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;
}