解法一:写的比较复杂
var removeDuplicates = function(nums) {
var len = nums.length -1;
var stack = []
stack.push(nums[0])
for(let i =1 ; i<=len;i ++) {
if(i==1 && nums[0]==nums[1]) {
nums.splice(0,1)
len--;
i--;
}else {
stack.push(nums[i])
}
if(stack.indexOf(nums[i+1])>=0){ //说明有重复元素
nums.splice(i,1)
len--;
i--;
}
}
return nums
};
改进版:
var removeDuplicates = function(nums) {
for(let i=0;i<nums.length;i++){
if(nums.indexOf(nums[i]) !== i){
nums.splice(i,1);
// 删除后下标往前移一位
i = i- 1;
}
}
return nums.length;
};
解法二:倒序
var removeDuplicates2 = function(nums){
var last = nums[nums.length -1];
for(var i = nums.length-1; i--;){
if(nums[i] == last){
nums.splice(i,1)
}else {
last = nums[i]
}
}
return nums
}