删除排序数组中的重复项
题目:
参数列表一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回值类型移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
要求:
返回长度,但是要改变数组,数组前几位必须是不重复的数字。
思路:
如果输入数组为空,那么返回0;
否则
首先将数组第一个数存在temp中,进行遍历,如果和temp元素相同的,count自加,(count用于计算一共有几个重复元素)。如果和temp元素不同,则将该数存入temp。并且将该值赋给数组的第二位元素。依次类推。
public int removeDuplicates(int[] nums) {
if(nums.length==0)
{
return 0;
}
else {
int temp=nums[0];
int count=0,j=0;
int length=0;
for(int i=1;i<nums.length;i++)
{
if(nums[i]==temp)
{
count++;
}
else {
temp=nums[i];
j++;
nums[j]=temp;
}
}
length=nums.length-count;
return length;
}
}