给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。求代码
时间: 2024-12-24 18:28:10 浏览: 6
给你一个包含n个整数的数组nums,并检查nums中是否有三个元素a、b和c使a+b+c=0?请查找总和为0且不重复的所有
对于给定的非严格递增排序数组 `nums`,你可以使用双指针技巧来原地删除重复元素并返回新数组的长度。以下是Python语言的一个解决方案:
```python
def removeDuplicates(nums):
if not nums:
return 0
# 使用两个指针,i指向当前未处理的位置,j作为已检查过的最后一个位置
i = 0
for j in range(1, len(nums)):
# 如果当前值等于下一个值,则跳过
if nums[i] == nums[j]:
continue
# 否则更新i到j+1,表示当前位置之后不再有重复元素
i += 1
nums[i] = nums[j]
# 返回新数组的长度(即处理完后的实际长度)
return i + 1
```
在这个函数中,我们遍历数组,如果遇到重复元素,就直接跳过;否则将该元素移动到已处理部分的末尾。最后返回 `i + 1` 即为去重后的数组长度。
阅读全文