728x90
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/
728x90
'LeetCode' 카테고리의 다른 글
[LeetCode] 28. Find the Index of the First Occurrence in a String (0) | 2023.10.27 |
---|---|
[LeetCode] 27. Remove Element (0) | 2023.10.27 |
[LeetCode] 25. Reverse Nodes in k-Group (2) | 2023.10.26 |
[LeetCode] 24. Swap Nodes in Pairs (0) | 2023.10.26 |
[LeetCode] 23. Merge k Sorted Lists (0) | 2023.10.26 |