Question
Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.
Do not allocate extra space for another array, you must do this in place with constant memory.
For example:
Given input array nums = [1,1,2]
Your function should return length = 2,with the first two elements of nums being 1 and 2 respectively。It doesn’t matter what you leave beyond the new length。
Idea
给定一个已经排序后的数组,移除重复的元素,返回最终的数组的长度。
不能为另外一个数组分配额外的空间,必须使用常量内存完成。
已经排序过的数组,直接利用++i的操作来赋值给不同的元素进行操作就可以。
- 需要注意,仅需返回最终的数组的长度即可,无需关心在返回的长度之后还存在什么。
Code
++i—Java
public class Solution {
public int removeDuplicates(int[] nums) {
if(nums.length == 0)
return 0;
int i = 0;
for(int j=0; j<nums.length; j++){
if(nums[j] != nums[i]){
nums[++i] = nums[j];
}
}
return ++i;
}
}
- 最后注意,返回的是数组的长度,长度和索引相差1,故返回++i.
- Runtime:18ms
- 时间复杂度O(n);空间复杂度O(1)

本文介绍了一种在已排序数组中去除重复元素的方法,并确保每个元素只出现一次。该方法不使用额外空间,通过一次遍历实现,适用于常量内存限制场景。
240

被折叠的 条评论
为什么被折叠?



