[LeetCode] 80. Remove Duplicates from Sorted Array II

lkdcode·2023년 8월 24일

Algorithm

목록 보기
5/47
post-thumbnail

80. Remove Duplicates from Sorted Array II


문제 분석

주어진 배열의 중복을 최대 2개까지 허용하여 배열을 다시 재정의하는 문제


풀이 과정

리스트를 2개 선언한 후 값을 리스트에 하나씩 추가해준다.
1. 첫번째 리스트와 두번째 리스트에 있는 값이라면 스킵한다.
2. 첫번째 리스트에 있으면서 두번째 리스트에 없는 값이라면 두번째 리스트에 추가한다.
3. 첫번째 리스트에 없는 값이라면 첫번째 리스트에 추가한다.
위의 조건을 지나가면서 배열의 값을 새로운 값으로 바꿔준다.


코드

  public int removeDuplicates(int[] nums) {
        List<Integer> firstList = new ArrayList<>();
        List<Integer> secondList = new ArrayList<>();

        int index = 0;

        for (int i = 0; i < nums.length; i++) {
            if (firstList.contains(nums[i]) && secondList.contains(nums[i])) {
                continue;
            }

            if (firstList.contains(nums[i]) && !secondList.contains(nums[i])) {
                secondList.add(nums[i]);
            }

            if (!firstList.contains(nums[i])) {
                firstList.add(nums[i]);
            }

            nums[index++] = nums[i];
        }

        return index;
    }

profile
되면 한다

0개의 댓글