LeetCode: Remove Duplicates from Sorted Array 2

문제 풀이

주어진 정렬된 배열에서 같은 수는 최대 2번만 나오도록 배열을 추가적인 공간을 사용하지 않고 변경하는 문제이다.
추가적인 공간을 사용하고 푼다면 쉬운 문제이지만 사용하지 않으려니 좀 고민이 많았다.

우선 정렬된 배열이므로 같은 숫자들끼리 뭉쳐져있다.
입력 받은 배열의 길이가 2이하일 경우는 배열을 변경하지 않아도 되므로 바로 return한다.

i, j 변수를 따로 두고 진행했다.

class Solution {
    public int removeDuplicates(int[] nums) {
        
        if(nums.length <= 2) {
            return nums.length;
        }
        
        int i = 1;
        int j = 2;
        
        while(j < nums.length) {
            if(nums[j] == nums[i] && nums[j] == nums[i - 1]) {
                j++;
            }
            else {
                i++;
                nums[i] = nums[j];
                j++;
            }
        }
        return i + 1;
    }
}

좋은 웹페이지 즐겨찾기