https://leetcode.com/problems/remove-duplicates-from-sorted-array-ii
- nums 배열을 검사하며 동시에 nums 배열을 수정해야 한다.
➡️ 당연히 nums 배열은 앞에서부터 순차적으로 수정된다.- 동일한 숫자가 두 개 이상 들어갈 수 없다.
➡️ 숫자가 들어간 횟수를 카운팅한다.
➡️ 새로운 숫자가 등장하면 카운팅 시작한다.🧐 nums가 어떤 인덱스까지 수정되었는지와 숫자가 들어간 횟수를 카운팅하자
k = 0
count = 0
for(i=0 to nums 끝까지){
if(현재원소 != 직전원소){
count = 0
}
if(count < 2){
nums[k] = 현재원소
k++
count++
}
}
return k
public int removeDuplicates(int[] nums) {
if (nums.length <= 2) {
return nums.length;
}
int index = 2;
for (int i = 2; i < nums.length; i++) {
if (nums[i] != nums[index - 2]) {
nums[index] = nums[i];
index++;
}
}
return index;
}
nums.length
를 체크해 연산할 필요가 없는 경우 빠르게 리턴했다.
또 나처럼 count
변수를 이용하지 않고도,index-2
와 현재 인덱스를 확인해 동일하지 않은지 체크했다. 덕분에 아주 간결한 코드가 되었다.