알고리즘

Remove Duplicates from Sorted Array

point_Man 2023. 8. 24. 21:51

 

정렬된 배열에서 중복 제거

 

Remove Duplicates from Sorted Array - LeetCode

Can you solve this real interview question? Remove Duplicates from Sorted Array - Given an integer array nums sorted in non-decreasing order, remove the duplicates in-place [https://en.wikipedia.org/wiki/In-place_algorithm] such that each unique element ap

leetcode.com

비내림차순nums 으로 정렬된 정수 배열이 주어 지면 각 고유 요소가 한 번만 나타나도록 중복 항목을 제자리에서 제거합니다 . 요소의 상대적 순서는 동일하게 유지되어야 합니다 . 그런 다음 의 고유 요소 수를 반환합니다 .nums

nums의 고유 요소 수를 고려하여 k승인을 받으려면 다음 작업을 수행해야 합니다.

  • nums의 첫 번째 k요소가 처음 nums에 있었던 순서대로 고유한 요소를 포함하도록 배열을 변경합니다 nums. 의 나머지 요소는 의 nums크기만큼 중요하지 않습니다 nums.
  • 반환 k.

맞춤 판사:

판사는 다음 코드를 사용하여 솔루션을 테스트합니다.

int[] 숫자 = [...]; // 입력 배열 
int[] ExpectNums = [...]; // 올바른 길이의 예상 답변 

int k = RemoveDuplicates(nums); // 구현을 호출합니다. 

Assert k == ExpectNums.length; 
for (int i = 0; i < k; i++) { 
    nums[i] == ExpectNums[i]; 
}

모든 주장이 통과되면 솔루션이 승인 됩니다 .

 

예시 1:

입력: nums = [1,1,2]
 출력: 2, nums = [1,2,_]
 설명: 함수는 k = 2를 반환해야 하며 nums의 처음 두 요소는 각각 1과 2입니다. 
반환된 k 외에 무엇을 남겨두는지는 중요하지 않습니다(따라서 밑줄로 표시됩니다).

예 2:

입력: 숫자 = [0,0,1,1,1,2,2,3,3,4]
 출력: 5, 숫자 = [0,1,2,3,4,_,_,_,_, _]
 설명: 함수는 k = 5를 반환해야 하며, nums의 처음 5개 요소는 각각 0, 1, 2, 3, 4입니다. 
반환된 k 외에 무엇을 남겨두는지는 중요하지 않습니다(따라서 밑줄로 표시됩니다).

 

제약:

  • 1 <= nums.length <= 3 * 104
  • -100 <= nums[i] <= 100
  • nums내림차순 으로 정렬되지 않습니다 .

1.첫번째 시도 (성공)

    public int removeDuplicates(int[] nums) {
        int idx = 1;

    
        for(int i = 0 ; i < nums.length-1 ; i++){
            
            if(nums[i] != nums[i+1] ){
                nums[idx++] = nums[i+1];
            }

        }

        return idx;
    }

값이 오름차순으로 정렬이 되었다는 조건이 있기 때문에 

i번째의 값과 i+1번째의 값을 처음부터 비교해가며 두 값이 다르면 중복이 아니라고 판단하였습니다.

조건을 만족하면  idx를 증가시켜 다음 idx번째에 i+1번째의 값을 넣어 중복을 제거하였습니다. 

'알고리즘' 카테고리의 다른 글

[Linked List] Linked List Cycle  (0) 2023.08.28
[Two Pointers] Valid Palindrome  (0) 2023.08.28
Rotate Array  (0) 2023.08.25
Best Time to Buy and Sell Stock  (0) 2023.08.23
Jump Game  (0) 2023.08.22