【算法题】删除有序数组中的重复项

发布时间 2023-10-15 00:31:52作者: 影麟

题目链接

思路1:使用set。

/**
 * @param {number[]} nums
 * @return {number}
 */
var removeDuplicates = function(nums) {
	const uniqueSet=new Set();
    for(let i=0;i<nums.length;i++){
        uniqueSet.add(nums[i]);
    }
    const uniqueArray=Array.from(uniqueSet);
    nums.length=0;
    nums.push(...uniqueArray);
    return nums.length;
};

时间复杂度:\(O(nums.length)\)

空间复杂度:\(O(nums.length)\)

在这里插入图片描述

思路2:使用Hash数组标识重复项。

/**
 * @param {number[]} nums
 * @return {number}
 */
var removeDuplicates = function(nums) {
	let hash=[];
    let uniqueCount=0;
    for(let i=0;i<nums.length;i++){
        if(!hash[nums[i]]){
            hash[nums[i]]=true;
            nums[uniqueCount++]=nums[i];
        }
    }
    nums.length=uniqueCount;
    return uniqueCount;
};

在这里插入图片描述

时间复杂度:\(O(nums.length)\)

空间复杂度:\(O(nums.length)\)