Leetcode

[Leetcode] 26. Remove Duplicates from Sorted Array - JS

Wix 2024. 8. 20. 13:49

https://leetcode.com/problems/remove-duplicates-from-sorted-array/description/?envType=study-plan-v2&envId=top-interview-150

 

 

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)의 이전 값과 순회 중인 현재 값을 비교하여

훨씬 더 깔끔한 코드를 작성할 수 있다.