[Array / String] Remove Duplicates from Sorted Array

Yongki Kim·2023년 8월 25일
0
post-thumbnail

26. Remove Duplicates from Sorted Array

지문은 링크에서 확인해주세요.

1. 해답을 보지 않고 스스로 문제를 해결한 과정

본 문제는 해결하지 못했습니다.

/**
 * @param {number[]} nums
 * @return {number}
 */
var removeDuplicates = function(nums) {
  const dupChkArr = Array.from({length: nums.length}).fill(0);

  for(let i = 0; i < nums.length; i++) {
    for(let j = i + 1; j < nums.length; j++) {
      if(nums[i] === nums[j]) {
        dupChkArr[j] = 1;
      }
    }
  }

  for(let i = 0; i < nums.length; i++) {
    if(dupChkArr[i] > 0) {
      nums.splice(i, 1);
    }
  }

  return nums.length;
};

nums 배열의 요소에 변경을 가하다보니 바깥쪽 for문에서 탐색 기준이 되는 인덱스(i)가 자주 바뀝니다. 필자는 nums 배열에 중복이 되는 요소를 별도의 JS배열(dupChkArr)에 마킹두었습니다. 이로써 dupChkArr에서 마킹한 요소의 인덱스를 nums에 대입해서 제거하고자 하였습니다. 하지만, nums 배열의 요소에 변경을 가하면 dupChkArr에 마킹한 요소와 불일치가 발생하기 때문에 타당한 풀이가 아니었습니다.

2. 해답을 찾아서 자신이 작성한 알고리즘에 대해서 회고한 내용

이전에 필자가 수행한 해답이 있어서 참고하였습니다.

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

JS배열의 요소에 변경을 가할 시, 재배열이 이루어지는 특성을 이용하여 탐색 기준이 되는 인덱스를 재조정하는 해답입니다.

0개의 댓글