公告

微信

欢迎大家私信交流

Skip to content

题目

https://leetcode.cn/problems/remove-duplicates-from-sorted-array-ii/description/?envType=study-plan-v2&envId=top-interview-150

自解

思路分析

思路不太好,最终也没有实现

  1. 慢指针赋值 快指针遍历 for循环足够了
  2. 快指针从 1 开始,判断慢指针和快指针中间有多少个不同的值
  3. 当值等于1,慢指针移动添加一个不同值;当值大于等于1,慢指针移动两次,添加两个不同值

代码实现

go
// 无 2024.9.3 水平有限~

他解

思路分析

  1. 当数组小于2,直接返回数组的长度
  2. 设置快慢指针s、f
  3. 因为数组是有序递增的,当nums[s-2]的值和nums[f]的值相等时,不需要这个值,因为nums数组s-2到l这之间的数值都相等,f自增
  4. 当nums[s-2]的值和nums[f]的值不相等时,这时候从nums[s]填充nums[f],s和f自增

代码实现

go
func removeDuplicates(nums []int) int {
  l := len(nums)
  if l < 2 {
    return l
  }

  s, f := 2, 2

  for f < l {
    if nums[s-2] != nums[f] {
      nums[s] = nums[f]
      s++
    }
    f++
  }
  return s
}

上次更新于: