灵巧的方法
转自
https://blog.csdn.net/youyoulanyouyou/article/details/79574769
给定一个有序数组,删除重复内容,使每个元素只出现一次,并返回新的长度。
不要为其他数组分配额外的空间,您必须通过在 o(1)额外的内存中修改输入数组来实现。
例如:nums[]={5 5 5 6 7 7 7 7 9 9 9 9 9} 有4个不同数字
在数值不同时才做处理
5 5 5 6 7 7 7 7 9 9 9 9 9
5 5 5 6 7 7 7 7 9 9 9 9 9
5 5 5 6 7 7 7 7 9 9 9 9 9
一个值记录数组中不同数字的个数,并且用这个值取作为下标覆盖掉原数组中改下标的值
int number = 0;
for(int i =0; i<nums.length;i++){
// 相邻两个值比较,不同才做统计操作
if(nums[i]!=nums[number]){
number++;
nums[number] = nums[i];
}
}
// 不同数字为总量= number+1
return ++number;