题目
给你一个 升序排列 的数组 ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 中唯一元素的个数。
考虑 的唯一元素的数量为 ,你需要做以下事情确保你的题解可以被通过:
- 更改数组 ,使 的前 个元素包含唯一元素,并按照它们最初在 中出现的顺序排列。 的其余元素与 的大小不重要。
- 返回 。
解题
def remove_duplicates(nums):if not nums:return 0# unique_index 初始化为 1,因为第一个元素总是唯一的unique_index = 1# 遍历数组,从第二个元素开始for current_index in range(1, len(nums)):# 如果当前元素不等于前一个元素,说明是唯一元素if nums[current_index] != nums[current_index - 1]:nums[unique_index] = nums[current_index]unique_index += 1return unique_index# 示例使用
nums = [1, 1, 2, 2, 3, 4, 4, 5]
k = remove_duplicates(nums)
print("数组中唯一元素的个数:", k)
print("修改后的数组:", nums[:k])
数组中唯一元素的个数: 5
修改后的数组: [1, 2, 3, 4, 5]