주어진 배열의 중복을 최대 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;
}
