ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [LeetCode/JAVA] 80. Remove Duplicates from Sorted Array II
    ETC/Algorithm 2023. 8. 24. 17:38

    문제

    감소하지 않는 순서로 정렬된 정수형 배열 nums가 주어지는데, in-place 방식으로 중복을 제거해야한다. 중복의 최대 허용 개수는 2개 이고, 관계대로 정렬을 유지해야한다.

    풀이

    중복이 2개까지 허용인점과 순서가 정렬되어있다는 점을 고려해서, 인덱스 1부터 시작하면서 앞의 값과 비교를 한다. 여기서 먼저 중복된 개수를 수정하고, 수정된 결과에 따라 배열의 요소를 변경해준다.

     

    class Solution {
        public int removeDuplicates(int[] nums) {
            // 시작위치는 1
            int pos = 1;
            // 중복 횟수를 체크할 변수
            int sameCount = 0;
            for(int i = 1; i < nums.length; i++){
                // 만약 중복 된 수라면 sameCount 1 증가
                if(nums[i - 1] == nums[i]) sameCount++;
                // 중복되지 않은 수라면 sameCount 초기화
                else sameCount = 0;
                
                // 앞서 계산한 sameCount에 따라 배열 요소 변경
                if(sameCount < 2) nums[pos++] = nums[i];
            }
            
            // 마지막에 수정된 위치 까지가 유효한 배열 요소
            return pos;
        }
    }

    댓글

Designed by black7375.