Remove Duplicates from Sorted Array

유길상·2022년 6월 8일
0

자료구조 - 리스트

목록 보기
8/10

문제

전제
내림차순으로 정렬된 배열 nums가 주어졌을때 중복되는 요소들은 오직 하나만 남도록 제거하고 내림차순으로 정렬된 형태로 나타낸다.

중복이 제거된 요소들은 nums의 길이가 되고 이 길이의 값은 k로 반환된다.

새로운 배열 객체 없이 수행되어야한다.

int[] nums = [...]; // Input array
int[] expectedNums = [...]; // The expected answer with correct length

int k = removeDuplicates(nums); // Calls your implementation

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

위의 코드로 기능을 점검한다.

예제1

입력: nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
출력: [1,2,2,3,5,6]
설명 : 병합할 배열은 [1,2,3]과 [2,5,6]이다.
병합 결과는 [1,2,2,3,5,6]이다.

예제2

입력: nums = [1,1,2]
출력: 2, nums = [1,2,_]
설명 : k = 2와 함께 nums의 요소들은 첫 번째 부터 순서대로 1,2를 나타낸다.
그 뒤의 요소는 무엇을 남기든 문제없다.

제약 조건

1 <= nums.length <= 3 * 104
-100 <= nums[i] <= 100
nums is sorted in non-decreasing order.


Solution

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

0개의 댓글