初级算法(第一题)
哈喽大家好我会不定期更新一些算法题,都是leetCode上面的算法题,我也是一道一道做然后会将详细的解法附上,有不对的地方欢迎指正,我只会附上js的解法,其他的解法大家可以按照js思路去自行编码,大家可以搭配leetCode来看
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
/**
* @param {number[]} nums
* @return {number}
*/
var removeDuplicates = function(nums) {
//首先拿到nums的长度
const n = nums.length;
//判断n是否等于0如果等于0就直接返回
if(n === 0){
return n;
}
//定义一个左指针
let left = 1;
//循环数组定义一个右指针每次都让右指针和左边的作比较
//如果右指针不等于左边的数值就把右指针的书数值给左指针
//然后左指针加1
//最后返回左指针会输出整理后的数组
for(let right = 1;right<n;right++){
if(nums[right]!==nums[right-1]){
nums[left] = nums[right];
++left;
}
}
//最后返回左指针
return left;
}