题目:
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
解答思路:设i和j,连个分别记录当前循环到哪(i)和当前赋值到哪(j)。也就是双指针??? (哎,我好菜啊。真的菜)
/**
* @param {number[]} nums
* @return {number}
*/
var removeDuplicates = function(nums) {
if (nums.length === 0) return 0
let i, j = 0
for (i = 1; i < nums.length; i++) {
if (nums[j] !== nums[i]) {
j ++ // 这个 j++ 真的精髓
nums[j] = nums[i]
}
}
return ++ j // 如果写成 j++就不行 ,当然写成 j+1肯定可以
};