26. 删除有序数组中的重复项
与 27. 移除元素 类似。
题目描述
双指针
分析:
- 因为数组是有序的,所以比较简单,从前往后遍历就行了;
- 设置两个指针,
i
记录新数组的位置,j
遍历旧数组,当nums[j]!=nums[i]
时,将nums[j]
赋值给nums[i]
,i
和j
再同时加1
;否则只需要j
加1
。
官方解↓
var i,j,flag=nums[0];
for(i=0,j=1;j<nums.length;j++){
if(nums[j]!=nums[i]){
i++;
nums[i]=nums[j];
}
}
return [i+1, nums];
复杂度分析:
- 时间复杂度: O ( n ) O(n) O(n) 。
- 空间复杂度: O ( 1 ) O(1) O(1)。