LeetCode 26: 정렬된 배열에서 중복 제거

중복 제거에 대해 이야기해 봅시다. 일반적으로 정렬된 배열에서 중복 항목을 제거하는 것은 빠른 작업입니다. 세트에 각 값을 추가하기만 하면 됩니다. 집합의 모든 값은 고유해야 하므로 집합에 포함된 값을 반환하기만 하면 됩니다. 이것은 이 문제에 대한 올바른 해결책이 아닙니다.

문제는 어레이를 제자리에서 수정해야 한다는 것입니다. 즉, 중복 항목을 찾았을 때 내 값을 저장할 다른 데이터 구조를 만들 수 없습니다. 물론 해결책은 여전히 ​​간단합니다. 나는 JavaScript에서 splice() 함수를 너무 많이 사용하는 즐거움을 얻지 못했기 때문에 그것을 재발견하기까지 내가 원했던 것보다 조금 더 오래 걸렸습니다.

이제 우리는 솔루션을 구축할 것입니다. 의사 코드로 먼저 설명하고 아래에 실제 코드를 제시하겠습니다.
  • 어레이를 통한 루프
  • 요소를 제거하면 배열 크기가 변경되므로 변수를 사용하여 초기 배열 길이를 저장해야 합니다
  • .
  • i가 array.length보다 크거나 같은지 확인합니다.
  • true인 경우 중단
  • i가 i+1과 같은지 확인
  • true인 경우 splice()를 사용하여 인덱스 i에서 요소를 제거합니다.
  • 추가 중복이 있는 경우 동일한 위치를 다시 확인하기 위해 i를 줄임

  • 내가 말했듯이 매우 간단합니다. 나는 이러한 알고리즘 문제를 지나치게 생각하는 경향이 있습니다. 그래서 연습하고 있어요!

    해결책:

    var removeDuplicates = function(nums) {
        let numsLength = nums.length;
        for (let i = 0; i < numsLength; i++) {
            if (i >= nums.length) {
                break;
            }
            if (nums[i] === nums[i + 1]) {
                nums.splice(i, 1);
                i--;
            }
        }
    };
    


    당신이 뭔가를 배웠기를 바랍니다! 좋은 하루 되시고 외출을 잊지 마세요 :)

    좋은 웹페이지 즐겨찾기