ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [LeetCode/JAVA] 26. Remove Duplicates from Sorted Array
    ETC/Algorithm 2023. 8. 24. 16:30

    문제

    감소하지 않는 순서로 정렬된 정수형 배열 nums이 주어지고, 이전 풀이와 같이 in-place 방식으로 중복된 요소들을 제거해야 한다.
    또한 각각의 고유한 요소는 한 번만 나와야한다. 그리고 이미 만들어져있던 순서대로 감소하지 않는 관계를 유지해야하고, 반환값으로 고유한 요소의 길이를 반환해야한다.

    풀이

    시작 인덱스 0부터 시작해서 일일이 비교한 다음 다른 값이 나오게 된다면 그 때 다른 값을 순서대로 앞으로 당겨서 넣어주면 될 것이다. 이전 LeetCode 문제들과 비슷한 유형이다.

    코드

    class Solution {
        public int removeDuplicates(int[] nums) {
            // 시작 인덱스는 0부터 시작한다.
            int pos = 0;
            // nums 배열의 전체를 일일이 반복한다.
            for(int i = 0; i < nums.length; i++){
                // 만약 시작 인덱스와 현재 반복중인 배열의 요소와 다르다면?
                
                if(nums[pos] != nums[i]){
                    // 시작 인덱스 바로 다음 인덱스에 반복중인 배열의 요소를 이동시킨다.
                    nums[++pos] = nums[i];
                }
            }
            // nums의 길이는 최소 0부터 시작되므로, 이동시킨 횟수가 유효한 배열의 총 길이이다.
            return pos + 1;
        }
    }

    댓글

Designed by black7375.