力扣26. 删除排序数组中的重复项--Go 语言

it2026-04-24  5

题目:

给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。

不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

代码:

func removeDuplicates(nums []int) int { if len(nums) == 0 { return 0 } i := 0 for j := 1; j < len(nums); j++ { if nums[i] != nums[j] { i ++ nums[i] = nums[j] } } return i + 1 }

思路:

双指针,i 是遍历数组的指针,j 是 i 后一位的指针,当 nums[i] 和 num[j] 不相等时指针 i 前进一位,并且把 j 的值赋给 i ,优点是当两个位置值相同时,只是让 i 指针加了一,在下次比较后会将重复的值替换为不重复的值,符合题目要求的原地修改,最终 i+1 即为不重复的数组长度

最新回复(0)