Google 태그 관리자 아이콘

알고리즘 풀이

.leetcode(26. Remove Duplicates from Sorted Array)

silvergoni 2022. 4. 25. 08:49
반응형

https://leetcode.com/problems/remove-duplicates-from-sorted-array/

 

 

2. 2022/04/25 시도

소요시간: 4분

class Solution {
    public int removeDuplicates(int[] nums) {
        int counter = 1;
        for (int i=1; i<nums.length; i++) {
            if (nums[i] != nums[i-1]) {
                counter++;
            }
        }
        
        int[] result = new int[counter];
        result[0] = nums[0];
        int index = 1;
        for (int i=1; i<nums.length; i++) {
            if (nums[i] != nums[i-1]) {
                nums[index++] = nums[i];
            }
        }
    
    
        return counter;
    }
}

풀이 접근 과정

숫자가 달라질 수 있는 부분, 즉 숫자의 종류의 갯수를 센다.

그 다음에 그 숫자를 다시 in-place(기존에 주어진 배열을 이용)하게 세팅해준다.

 

느낀점

  • 아래는 포인터 두개로 풀었고 이번에는 포인터 하나로 풀었다. 아마도 더 고도화된 해설은 아래이지만 기본적인 방법도 익혀가자.

 


1. 2022.04.16 시도

소요시간: 4분

class Solution {
    public int removeDuplicates(int[] nums) {
        if (nums.length == 0) {
            return 0;
        }

        int prev = 0;
        for (int i=1; i<nums.length; i++) {
            if (nums[prev] == nums[i]) {
                continue;
            }
            
            prev++;
            nums[prev] = nums[i];
        }

        return prev+1;
    }
}

풀이 접근 과정

이전 인덱스를 저장해두고 같은 숫자가 나오면 넘어간다.

다른 숫자가 나오면 그때 prev를 중가시키고 현재 인덱스 값을 해당인덱스에 저장한다.

실제 갯수는 마지막 세팅된 인덱스에 +1을 한 값이므로 그렇게 리턴한다.

 

느낀점

  • 재밌다.

알고리즘 정리노트: .leetcode(알고리즘 문제풀이 접근)

반응형