给定排序的数组nums,就地删除重复项,使每个元素只出现一次并返回新的长度。
不要为另一个数组分配额外的空间,你必须这样做修改输入数组就地用O(1)额外的内存。
例1:
鉴于nums = [1,1,2],你的函数应该返回length =2,
前两个元素分别为1
和2
。
例2:
鉴于nums = [0,0,1,1,1,2,2,3,3,4],您的函数应返回length= 5
,nums前五个元素
0
,1
,2
,3
,4
。
解法:
1 为数组设置下标索引i=1,j=0; 2 在以i为for循环光标向下走当下标为j的数和下标为i的数不相等时将下标为i的数赋给下标为j的数的后一位。 3 public int removeDuplicates(int[] nums) { 4 int i,j=0; 5 for ( i=1;i<nums.length;i++) 6 { 7 if (nums[i]!=nums[j]){ 8 j++; 9 nums[j]=nums[i]; 10 } 11 } 12 return j+1; 13 }