80. Remove Duplicates from Sorte
2022-04-22 本文已影响0人
sarto
题目
给定一个非递减有序数组 nums
。用本地替换的方式,使的同一个元素最多出现两次。元素的相对位置应保持不变。
解析
这个题目是在原来题目的上变更了条件,要使一个元素最多出现两次。我们只需要修改判定条件即可,即,如果前边已经出现了两个元素,则放弃,否则追加这个元素。
正向比较需要判断两次,修改比较逻辑,如果这个元素和前一个不想等,则追加,或者,这个元素和前2个元素不想等,说明是第二个追加,其他情况均不追加。
伪代码
for i:=2;i<len;i++
if nums[i] != nums[f] || nums[i] != nums[f-1]
nums[f+1] = nums[i]
i++
代码
func removeDuplicates(nums []int) int {
if len(nums) <=2 {
return len(nums)
}
f:=1
for i:=2;i<len(nums);i++ {
if nums[i] != nums[f] || nums[i] != nums[f-1] {
nums[f+1] = nums[i]
f++
}
}
return f+1
}
