문제

문제 해석
이전의 포스팅 처럼 중복을 제거하는 것
But 2개 까지의 중복은 허용한다.
문제 해결 방식 1
수도코드
문제의 핵심은
1. 2개까지는 출력을 하되 3개부터 날려야된다. 나머지는 이전과 동일하다.
수도코드
for반복
if(같지 않다.)
count 0초기화
저장하고 저장하는 index 늘려
else
2개보다 클 경우
건너 뛰고, count++
작을 경우
입력하고 count++
index++수도 코드를 보면 크게 생각을 하지 않고 코드를 작성했다.
그냥 검증을 하나 더 때려서 코드를 작성한 것 뿐이다.
코드
class Solution {
public int removeDuplicates(int[] nums) {
int count = 0;
int index = 1;
for(int i = 1; i < nums.length ; i++){
if(nums[i] != nums[i-1]){
count = 0;
nums[index++] = nums[i];
}else{
count++;
if(count <2){
nums[index++] = nums[i];
}
}
}
return index;
}
}코드 회고
- 코드를 작성 할 때 생각을 조금 더 해보는 습관을 가져야겠다.
다른 사람 문제 풀이
방법 1
class Solution {
public int removeDuplicates(int[] nums) {
int index = 2;
for(int i = 2 ; i <nums.length ; i++){
if(nums[i] != nums[index-2]){
nums[index++] = nums[i];
}
}
return index;
}
}
코드 분석
내 코드가 실패했던 것은
if(nums[i] != nums[index-2]){
nums[index++] = nums[i];
}
이 부분에서 index -2 를 i -2 로 했기 때문에 중복이 터져나오지 않았다.
위의 코드 보면 index를 이용해서 비교하고 있다.
index는 이미 검증이 되어 있는 아이들만 존재하기 때문에 검사를 했을 때 문제가 생기지 않는다.
'코테' 카테고리의 다른 글
| 리트코드 189. Rotate Array JAVA (0) | 2023.08.25 |
|---|---|
| 리트코드 169. Majority Element JAVA (0) | 2023.08.25 |
| 리트코드 26. Remove Duplicates from Sorted Array JAVA (0) | 2023.08.24 |
| 리트코드 27.Remove Element JAVA (0) | 2023.08.24 |
| 리트코드 88. Merge Sorted Array JAVA (0) | 2023.08.23 |