题目链接
思路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)。