Algorithm/LeetCode

LeetCode 26. Remove Duplicates from Sorted Array

hhsaebom 2021. 1. 8. 02:40

문제링크: leetcode.com/problems/remove-duplicates-from-sorted-array/

문제 요약: (문제 이해하는게 제일 오래걸렸다.) 정렬된 배열이 주어졌을때, 주어진 배열을 바꾸고(중복을 다 제거하고), 중복아닌 원소 갯수 반환. 

* 부연설명: 주어진 배열이 [1,1,2,2,3] 이면 중복을빼면 [1,2,3] 인데, 주어진 배열 자체를 [1,2,3,2,3] 뒷인덱스는 신경안쓴다고함. 이런식으로 바꾸고 중복아닌 원소 갯수를 return;

예: [1,1,2] -> [1,2] (내가푼 방식되로 한다면, 원래 배열은 [1,2,2] 이렇게 되있음)

예: [0,0,1,1,1,2,2,3,3,4] -> [0,1,2,3,4] (마찬가지로 원래 배열은 [0,1,2,3,4,2,2,3,3,4]

 

문제접근: 문제만 이해한다면 반복문 한번에 끝낼 수 있다. (문제가 이상한거 같아서 싫어요가 많다.)

 

구현코드:

class Solution {
    public int removeDuplicates(int[] nums) {
        int res = 1;
        for(int i = 0; i < nums.length - 1; i++) {
            if (nums[i] != nums[i+1]) {
                nums[res] = nums[i+1];
                res++;
            }
        }
        return res;
    }
}

res가 1인 이유는, 맨 앞 원소는 무조건 포함이니까 (중복이든 아니든 세야한다.) 두번째 인덱스부터 숫자를 채워나가기 위해서이다.

마찬가지로 싫어요가 많아서 안풀라했지만, easy 안푼것들 풀어보려고 해서 풀어봄.