문제
문제 링크 : Remove Duplicates from Sorted Array
풀이
var removeDuplicates = function(nums) {
const deduplicatedSet = new Set(nums);
let deduplicatedArray = Array.from(deduplicatedSet);
for (var i = 0; i < deduplicatedArray.length; i++) {
nums[i] = deduplicatedArray[i];
}
nums.length = deduplicatedArray.length;
return nums.length;
};
- 중복제거한 array를 만들고
- nums[i]에 중복제거한 array[i]을 할당
- nums.length도 중복제거한 array length로
- nums.length return
- Runtime 59 ms, Memory 44.5 MB
의문점
- nums에 [...new Set(nums)]를 바로 할당하면 문제 풀이 실패
=> remove the duplicates in-place 때문
다른 풀이
var removeDuplicates = function(nums) {
let insertAt = 1
for (let i = 1; i < nums.length; i++) {
if (nums[i] !== nums[i - 1]) {
nums[insertAt] = nums[i]
insertAt++
}
}
return insertAt
};
- Runtime 61 ms, Memory 44.8 MB