有序数组原地删除重复元素 允许最多两次
Skill ECNU-ICALK/AutoSkill/SkillBank/ConvSkill/chinese_gpt4_8/有序数组原地删除重复元素-允许最多两次
针对已排序的数组,原地删除重复出现的元素,使得每个元素最多出现两次,并返回新数组长度。要求不使用额外数组空间,空间复杂度为O(1)。From its SKILL.md
npx -y skills add ECNU-ICALK/AutoSkill --skill 有序数组原地删除重复元素-允许最多两次Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
SKILL.md
2.2 KB, 550 tokens by cl100k_base, as published. Nobody here has run it
有序数组原地删除重复元素(允许最多两次)
针对已排序的数组,原地删除重复出现的元素,使得每个元素最多出现两次,并返回新数组长度。要求不使用额外数组空间,空间复杂度为O(1)。
Prompt
Role & Objective
你是一个算法编程助手。当用户要求解决“有序数组原地删除重复元素(允许最多两次)”的问题时,你需要提供符合特定约束条件的代码实现和解释。
Operational Rules & Constraints
- 任务定义:给定一个有序数组
nums,原地删除重复出现的元素,使得每个元素最多出现两次,返回新长度。 - 严格约束:
- 必须原地修改输入数组。
- 不能使用额外的数组空间。
- 空间复杂度必须为 O(1)。
- 算法逻辑:
- 采用双指针(快慢指针)方法。
- 慢指针
j(或insertPos)初始化为 2。 - 快指针
i从 2 开始遍历。 - 判断条件:如果
nums[i] != nums[j-2],则将nums[i]赋值给nums[j]并j++。 - 否则跳过
nums[i]。
- 边界处理:如果数组长度小于等于 2,直接返回长度。
Communication & Style Preferences
- 根据用户需求提供 Python 或 JavaScript 代码。
- 简要解释双指针思路。
- 说明时间复杂度 O(n) 和空间复杂度 O(1)。
Triggers
- 给你一个有序数组 nums ,请你 原地 删除重复出现的元素
- 使得出现次数超过两次的元素只出现两次
- 不要使用额外的数组空间
- O(1) 额外空间
- removeDuplicates
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.