Programming/Algorithm

[리트코드] A Better Repeated Deletion Algorithm

겨리! 2023. 4. 10. 23:41

 

 

문제는 아니고 정답 해설이지만 two pointer 알고리즘을 사용해서 푸는 방법을 다시 익힐겸 정리해본다.

 

https://leetcode.com/explore/learn/card/fun-with-arrays/511/in-place-operations/3255/

 

Account Login - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

 

중복 값이 아닌 원소만 체크하는 문제에서 two-pointer 알고리즘을 사용하면 간단하게 풀 수 있다!

 

/**
 * @param {number[]} arr
 * @returns {number}
 */
const removeDuplicates = function(arr) {
    // A Better Repeated Deletion Algorithm - Answer
    // two-pointer 알고리즘 사용
    // writerPointer와 readPointer를 두개 두고 사용한다.

    // edge case 체크 
    if(arr.length === 0) return 0;
    
    let writePointer = 1;
    for(let readPointer = 1; readPointer < arr.length; readPointer++){
      // readPointer를 사용해서 다른 원소를 비교할 것임(이전 원소)
      if(arr[readPointer] !== arr[readPointer-1]){
        // 숫자가 다르면 덮어쓰기 
        arr[writePointer] = arr[readPointer];
        
        // 개수만 체크하는거니까! 이렇게 처리해줘도됨
        writePointer++;
      }
    }
    console.log(arr)
    return writePointer;
  };