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
}
image.png
上一篇 下一篇

猜你喜欢

热点阅读