给定一个排序数组,删除重复的位置,使每个元素只出现一次并返回新的长度。不要为另一个数组分配额外的空间,必须使用常量内存来执行此操作。
例如,给定输入数组nums = [1,1,2],你的函数应该返回length
= 2,num的前两个元素分别为1和2。没有什么你离开超出了新的长度。
算法描述:
public static int removeDuplicates(int[] nums) {
int len = nums.length;
if (len == 0 || len == 1)
return len;
Arrays.sort(nums);// 先排序
List<Integer> list = new ArrayList<>();
for (int i = 1; i < nums.length; i++) {
if (nums[i] == nums[i - 1]) {
list.add(i);
}
}
for(int i=list.size()-1;i>=0;i--)
{
for(int k=list.get(i);k<len-1;k++)
{
nums[k]=nums[k+1];
}
len-=1;
}
return len;
}
本文介绍了一种不使用额外空间删除已排序数组中重复项的方法,通过先排序再遍历比较相邻元素的方式,去除重复项并调整数组长度。
868

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



