题目:
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
思路:题目很简单,因为已经排好序,只需用i遍历数组,j来标记修改位,将遍历得到到的数传给j即可。
贴上代码。
class Solution {
public int removeDuplicates(int[] nums) {
int i;
int j=1;
int len= nums.length;
for(i=0;i<len-1;i++){
if(nums[i]!=nums[i+1]){
nums[j]=nums[i+1];
j++;
}
}
return j;
}
}
提交结果:
结论:用时更快的算法也只是考虑多了一些情况比如空数组等,算法使用原理与本方法类似。