26. Remove Duplicates from Sorted Array

Fekim·2022년 1월 19일
0

ps

목록 보기
7/48

문제정의

  • 정수형 배열 하나를 입력 받아, 정수 하나를 반환하는 함수를 구현한다.
  • 입력받은 배열에서, 연속되는 동일한 값의 정수는 하나로 저장한다.
  • 연속되지 않는 정수의 갯수를 반환한다.

<예시1>

Input: nums = [1,1,2]

Output: 2, nums = [1,2,_]

<예시2>

Input: nums = [0,0,1,1,1,2,2,3,3,4]

Output: 5, nums = [0,1,2,3,4,,,,,_]

풀이

public class Solution {
    public int removeDuplicates(int[] nums) {

        if(nums.length == 0)
            return 0;

        int[] dst = new int[nums.length];

        dst[0] = nums[0];
        int cnt = 1;

        for(int i=1, j=1; i<nums.length; ++i)
        {
            if(nums[i] != nums[i-1])
            {
                dst[j] = nums[i];
                j++;
                cnt++;
            }
        }

        for(int i=0; i < nums.length; ++i)
        {
            nums[i] = dst[i];
        }

        return cnt;
    }
}

숏코드 리뷰

출처 : 뱀귤 블로그

class Solution {
    public int removeDuplicates(int[] nums) {
        int index = 1;

        for (int i = 0; i < nums.length - 1; i++) {
            if (nums[i] != nums[i + 1]) {
                nums[index++] = nums[i + 1];
            }
        }

        return index;
    }
}
  • 원래 풀었던 방식보다 훨씬 간결한 코드를 찾아서 가져오게 되었다.
  • 내가 선택한 두번째 인덱스부터 비교하는 방식이 아닌, 첫번째 인덱스부터 비교하고 마지막에 인덱스를 반환해서 더 간결한 코드이다.
profile
★Bugless 2024★

0개의 댓글