双指针
给你一个 升序排列 的数组 nums
,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。
由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k
个元素,那么 nums
的前 k
个元素应该保存最终结果。
将最终结果插入 nums
的前 k
个位置后返回 k
。
不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
https://leetcode.cn/problems/remove-duplicates-from-sorted-array/description/
/** * @param {number[]} nums * @return {number} */ var removeDuplicates = function(nums) { // nums.sort(); var sl = 0 for(var fa=0;fa<nums.length;fa++){ if(nums[sl]!=nums[fa]) { sl++ nums[sl] = nums[fa] } } return sl+1 };
80. 删除有序数组中的重复项 II
中等
741
相关企业
给你一个有序数组 nums
,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
说明:
为什么返回数值是整数,但输出的答案是数组呢?
请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。
var removeDuplicates = function(nums) { var l =nums.length if(l<=2) return l var sl =2 for(var fa=2;fa<l;fa++){ if(nums[sl-2]!=nums[fa]){ nums[sl] =nums[fa] sl++ } } return sl };