美文网首页
80. Remove Duplicates from Sorte

80. Remove Duplicates from Sorte

作者: sarto | 来源:发表于2022-04-22 10:23 被阅读0次

题目

给定一个非递减有序数组 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

相关文章

网友评论

      本文标题:80. Remove Duplicates from Sorte

      本文链接:https://www.haomeiwen.com/subject/tsggertx.html