LeetCode 80 Remove Duplicates from Sorted Array II

nayu1105·2023년 8월 23일
0

LeetCode

목록 보기
4/28
post-thumbnail

LeetCode 80 Remove Duplicates from Sorted Array II 풀러가기

문제

숫자가 오름차순으로 정렬 된 nums 배열이 있다.

숫자가 최대 2번 중복 허용이 가능하도록 변경하려고 한다.

문제 분석

첫번째 시도(소요시간 5분)

for 문을 돌며 배열을 처음부터 끝가지 순회하면서 nums[index(default 0)] 번 부터 중복을 최대 2번 허용하는 배열로 바꾸려고 했다.

2번 중복허용을 위해 처음에는 숫자의 갯수를 세어서, 2가 되면 더이상 못 넣게 하려했다.

그러나 count로 짜지 않아도, 이전값과 다르면 무조건 넣고, 두개 이상 되면 boolean 값을 바꾸어 못 넣도록 할 수 있을 것 같았다.

nums[index-1]은 갱신된 nums의 마지막 index로 이 값과 동일하다면 check 값을 보며 한번 더 넣어도 될지를 결정하고,

동일하지 않다면 무조건 넣을 수 있도록 만들었다.

코드

class Solution {
    public int removeDuplicates(int[] nums) {
        int index = 1;
        boolean check = false;

        for(int i=1; i<nums.length; i++){
            if(nums[i]==nums[index-1]){
            //check가 false면 한번 더 넣을 수 있음.
                if(!check){
                    nums[index] = nums[i];
                    check = true;
                    index++;
                }
            }else{
                nums[index] = nums[i];
                check = false;
                index++;
            }
        }
        
        return index;
    }
}

결과 : 성공

Runtime

Memory

시간은 괜찮은데, 메모리가 효율적이지는 못한 것 같아 다른 방식을 고민해보아야겠다.

0개의 댓글