双指针

给你一个 升序排列 的数组 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
};

 

posted on 2022-11-08 11:27  cltt  阅读(24)  评论(0编辑  收藏  举报

导航