[LeetCode] Remove Duplicates from Sorted Array Solution

Hyebin·2021년 3월 14일
0
post-thumbnail
post-custom-banner

알고리즘 문제 풀이 스터디를 동기들과 같이 하게 되었다!
자바스크립트 지원이 잘 되어있는 릿츠코드에서 풀어봤는데 영어로 된 사이트라 문제해석부터 힘들었다;;

이 문제는 오랜시간 고민했지만 혼자 해결하기 힘들어서 다른 사람들이 풀어놓은 코드를 참조해서 풀었다 ㅠ

문제

Given a sorted array nums, remove the duplicates in-place such that each element appears only once and returns the new length.

Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.

정렬 된 배열 nums가 주어지면 중복 항목을 제거한 새 길이를 리턴
이때, 공간복잡도는 O(1)로 유지, 즉 새로운 배열 등을 생성하지 않아야 한다.

- Example :

Input: nums = [0,0,1,1,1,2,2,3,3,4]
Output: 5, nums = [0,1,2,3,4]
Explanation: Your function should return length = 5, with the first five elements of nums being modified to 0, 1, 

- 제출 코드 :

  1. 중복값을 제거한 배열의 길이를 리턴하기 위해 length 변수를 선언하고 0을 할당한다.
  2. nums 배열 index 값을 for문을 사용해 루프 돌리기
  3. 루프를 돌며 전 후 값을 비교하고
  4. 전 후 값이 다르면 전 값을 nums[length]에 할당 length 1증가
  5. slice()로 nums에 중복되지 않는 값으로 이루어진 배열 할당
  6. length 리턴 (배열 길이)
/**
 * @param {number[]} nums
 * @return {number}
 */
var removeDuplicates = function(nums) {
    let length = 0;
    for(let i=0; i<nums.length; i++) {
        if(nums[i] !== nums[i+1]) {
            nums[length] = nums[i];
            length++;         
        }                  
    }
    
    nums = nums.slice(0, length);
    //console.log(nums);
    return length;   
};

- 실행속도 비교 :

post-custom-banner

0개의 댓글