题目链接
思路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 ( n u m s . l e n g t h ) O(nums.length) O(nums.length),
空间复杂度: O ( n u m s . l e n g t h ) 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 ( n u m s . l e n g t h ) O(nums.length) O(nums.length),
空间复杂度: O ( n u m s . l e n g t h ) O(nums.length) O(nums.length)。