Leetcode
[Leetcode] 26. Remove Duplicates from Sorted Array - JS
Wix
2024. 8. 20. 13:49

1. 문제 분석
문제분석
--------------------
- 오름차순 정렬된 정수 배열 nums이 주어지고 중복 요소를 제자리에서 제거하여 고유한 요소는 한번만 등장한다.
- 상대적인 순서는 유지한다.
- 고유한 요소 갯수(k) 반환하라.
제한사항
--------------------
- 1 <= nums.length <= 3*10^4
- -100 <= nums[i] <= 100
- nums는 오름차순 정렬
2. 접근 방법
nums는 오름차순 정렬되어 있다고 하니
중복 요소를 저장하는 변수 duplicated, 포인터 k를 가지고 순회하면서
- 요소가 다르면 duplicated를 수정 후 포인터에 duplicated 할당후 포인터 이동
- 요소가 같으면 포인터 유지
포인터가 곧 고유한 값의 갯수이다.
풀이
/**
* @param {number[]} nums
* @return {number}
*/
var removeDuplicates = function(nums) {
let duplicated = nums[0];
let k = 1;
for (let i = 1; i < nums.length; i++) {
if (duplicated !== nums[i]) {
duplicated = nums[i];
nums[k] = duplicated;
k++;
}
}
return k;
};
다른 사람 풀이
function removeDuplicates(nums) {
let k = 1;
for (let i = 1; i < nums.length; i++) {
if (nums[i] !== nums[k - 1]) {
nums[k] = nums[i];
k++;
}
}
return k;
}
duplicated 변수를 선언하는 것 대신 현재 포인터(k)의 이전 값과 순회 중인 현재 값을 비교하여
훨씬 더 깔끔한 코드를 작성할 수 있다.