1. 문제
- 배열 nums에서 중복되는 각 요소는 최대 2개이며, 2개 초과되는 요소를 삭제한 최종 배열 nums의 길이를 구하여라
2. 시도
nums 배열의 중복된 값을 검사하고 2개 까지만 새 객체에 넣어줬다.
class Solution {
public int removeDuplicates(int[] nums) {
ArrayList<Integer> arr = new ArrayList<>();
int index = 0;
for (int n : nums) {
if (arr.contains(n) && index%2 == 0) {
continue;
}
arr.add(n);
index++;
System.out.println("index = " + index);
System.out.println("arr = " + arr);
}
for (int i=0; i<arr.size(); i++) {
nums[i] = arr.get(i);
}
return arr.size();
}
}
일부 테스트 케이스는 통과했지만 최종 제출에서 실패인 경우도 있었다.
이전에도 비슷한 문제를 풀면서 새로운 객체를 생성하지 않고 입력받은 배열만을 사용해 문제를 해결할 수 있을 것 같았다. 찾아보던 중 투 포인터 개념을 접하게 되었고, 배열 내부에서 두 개의 인덱스를 사용해 서로를 비교할 수 있었다.
3. 개선
class Solution {
public int removeDuplicates(int[] nums) {
int index = 2;
for (int i=2; i<nums.length; i++) {
if (nums[i] != nums[index-2]) {
System.out.println("nums[i] = " + nums[i]);
System.out.println("nums[index-2] = " + nums[index-2]);
nums[index] = nums[i];
index++;
}
}
System.out.println("index = " + index);
System.out.println("result = " + Arrays.toString(nums));
return index;
}
}
'자바 알고리즘' 카테고리의 다른 글
[leetcode - Java] 189. Rotate Array (0) | 2023.08.24 |
---|---|
[leetcode - Java] 169. Majority Element (0) | 2023.08.24 |
[leetcode - Java] 26. Remove Duplicates from Sorted Array (0) | 2023.08.24 |
[leetcode - Java] 27. Remove Element (0) | 2023.08.24 |
[leetcode - Java] 88. Merge Sorted Array (0) | 2023.08.23 |