/**
오름차순으로 정렬된 배열이 주어지고 다른 배열을 생성하지 않은 채 배열 내 중복값 일부를 삭제하는 문제인데,
적어도 두 개 이상 존재하는 요소를 삭제하는 문제입니다.
어떤 언어에서는 배열의 크기를 줄이는게 불가능하기 때문에 만약 중복값을 제거한 후 k개의 요소가 있다면 앞쪽 k개의 배열 요소만 체크합니다.
그렇기 때문에 k개 이후부터는 뭐가 있든 상관없음
1, 1, 1, 2, 2, 3
1이 3개이기 때문에 하나를 삭제
2는 2개이므로 그대로
3은 1개이므로 2개보다 작아서 그대로
1, 1, 2, 2, 3
0, 0, 1, 1, 1, 1, 2, 3, 3
0이 2개이므로 그대로
1은 4개이므로 2개 삭제
2는 1개로 2개보다 작아서 그대로
3은 2개이므로 그대로
0, 0, 1, 1, 2, 3, 3 -> 7개
이전값을 고려하되 현재값과 같은 값이 등장하면 몇 개의 같은 값이 등장했는지를 체크하도록 함
*/
class Solution {
public int removeDuplicates(int[] nums) {
int index = 0;
int count = 0;
for(int num: nums) {
if (index < 1 || num > nums[index - 1]) {
nums[index] = num;
index += 1;
count = 1;
} else if (num == nums[index - 1]) {
if (count < 2) {
nums[index] = num;
index += 1;
count += 1;
} else {
count += 1;
}
}
}
return index;
}
}
class Solution {
public int removeDuplicates(int[] nums) {
int index = 0;
for(int num: nums) {
if (index < 2 || num > nums[index - 2]) {
nums[index] = num;
index += 1;
}
}
return index;
}
}
'코딩테스트' 카테고리의 다른 글
4. Median of Two Sorted Arrays (0) | 2024.09.01 |
---|---|
[leetcode] 1657. Determine if Two Strings Are Close (0) | 2024.08.24 |
[leetcode] 26. Remove Duplicates from Sorted Array (0) | 2024.08.03 |
[leetcode] Find the Index of the First Occurrence in a String (0) | 2024.08.01 |
[leetcode] 14. Longest Common Prefix (0) | 2024.08.01 |