본문 바로가기
LeetCode

[LeetCode] 26. Remove Duplicates from Sorted Array

by JungSeung 2023. 10. 27.
728x90

https://leetcode.com/

Given an integer array nums sorted in non-decreasing order, remove the duplicates in-place such that each unique element appears only once. The relative order of the elements should be kept the same. Then return the number of unique elements in nums.

Consider the number of unique elements of nums to be k, to get accepted, you need to do the following things:

  • Change the array nums such that the first k elements of nums contain the unique elements in the order they were present in nums initially. The remaining elements of nums are not important as well as the size of nums .
  • Return k.

Custom Judge:

The judge will test your solution with the following code:

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];
}

If all assertions pass, then your solution will be accepted.


Example 1:

nput: nums = [1,1,2]
Output: 2, nums = [1,2,_]
Explanation: Your function should return k = 2, with the first two elements of nums being 1 and 2 respectively. It does not matter what you leave beyond the returned k (hence they are underscores).

 

Example 2:

Input: nums = [0,0,1,1,1,2,2,3,3,4]
Output: 5, nums = [0,1,2,3,4,_,_,_,_,_]
Explanation: Your function should return k = 5, with the first five elements of nums being 0, 1, 2, 3, and 4 respectively. It does not matter what you leave beyond the returned k (hence they are underscores).

 

Constraints:

  • 1 <= nums.length <= 3 * 10^4
  • -100 <= nums[i] <= 100
  • nums is sorted in non-decreasing order.

 

Code :

var removeDuplicates = function(nums) {
    if (nums.length === 0) return 0; // 빈 배열이면 0을 반환

    let result = 1; // 배열의 첫 번째 요소는 이미 고유한 요소이므로 result를 1로 초기화

    for (let i = 1; i < nums.length; i++) {
        // 현재 요소와 이전 요소가 다른 경우, 중복이 아니므로 result를 1 증가시키고
        // nums[result]에 현재 요소를 복사하여 고유한 요소로 처리
        if (nums[i] !== nums[i - 1]) {
            nums[result] = nums[i];
            result++;
        }
    }

    return result; // 고유한 요소의 개수 result를 반환
};

 

Solutions Code :

var removeDuplicates = function(nums) {
  let i = 0;
  // 두 개의 포인터를 사용하여 중복된 요소를 건너뛰고 배열을 수정한다.
  for (let j = 1; j < nums.length; j++) {
    // 현재 요소와 이전 요소를 비교하여 중복된 요소를 건너뛴다.
    if (nums[i] !== nums[j]) {
      // 중복이 아닌 경우 i를 증가시키고 현재 위치의 값을 이전 요소 위치에 덮어쓴다.
      i++;
      nums[i] = nums[j];
    }
  }
  // 중복이 제거된 배열의 길이를 반환한다.
  return i + 1;
}

 

 

출처 : https://leetcode.com/problemset/all/

 

Problems - LeetCode

Boost your coding interview skills and confidence by practicing real interview questions with LeetCode. Our platform offers a range of essential problems for practice, as well as the latest questions being asked by top-tier companies.

leetcode.com

 

728x90