26. Remove Duplicates from Sorted Array

LJM·2022년 12월 13일
0

LeetCode

목록 보기
1/10

오름차순 정렬된 정수(int) 배열이 주어짐. 중복된 숫자들이 있는데 하나씩 남도록 제거해야함. 오름차순은 유지해야함. 추가로 배열을 만들지 않고 풀어야함. 중복제거된 숫자들의 개수를 반환해야함.

나의 첫 시도 방법은 중복된 숫자들만 999로 만들었다. 그리고 정렬하고 반환. 이때 정렬하면서 시간을 많이 잡아 먹게된다.

class Solution {
public int removeDuplicates(int[] nums) {

    int temp = -999;
    int count = 0;
    for(int i = 0; i < nums.length; ++i)
    {
        if(temp != nums[i])
        {
            temp = nums[i];
            count++;
        }
        else
            nums[i] = 999;
    }

    Arrays.sort(nums);

    return count;

}

}

더 좋은 솔루션을 찾아보니 정렬이 필요없는 방법이다
인덱스 변수 두개를 만들고 첫 인덱스는 nums에 값을 넣기 위한 인덱스
두번째 인덱스는 탐색용 인덱스이다
두번째 인덱스로 탐색하다가 값이 증가할때만 nums[첫인덱스]에 값을 넣는다

class Solution {
public int removeDuplicates(int[] nums) {

    int indexforinsert = 0;
    for(int indexforsearch = 0; indexforsearch < nums.length; ++indexforsearch)
    {
        if(indexforsearch == 0 || nums[indexforsearch] > nums[indexforsearch-1])
        {
            nums[indexforinsert] = nums[indexforsearch];
            indexforinsert++;
        }        
    }

    return indexforinsert;

}

}

profile
게임개발자 백엔드개발자

0개의 댓글