문제는 아니고 정답 해설이지만 two pointer 알고리즘을 사용해서 푸는 방법을 다시 익힐겸 정리해본다.
https://leetcode.com/explore/learn/card/fun-with-arrays/511/in-place-operations/3255/
중복 값이 아닌 원소만 체크하는 문제에서 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;
};
[프로그래머스] 달리기 경주 (0) | 2023.04.14 |
---|---|
[프로그래머스] 덧칠하기 (0) | 2023.04.12 |
[프로그래머스] 공원 산책 (0) | 2023.04.04 |
[리트코드] Remove Element (0) | 2023.03.31 |
[리트코드] Duplicate Zeros (0) | 2023.03.30 |
댓글 영역